C++builder中的内存DC

TRect     r = TRect(0, 0, 18, 18);
TCanvas * c = new  TCanvas;
//创建兼容的内存设备上下文环境,参数0为显示器兼容
HDC  dc       = CreateCompatibleDC(0);
//创建位图结构,第1个参数则是指此位图与其颜色兼容
HBITMAP memBM = CreateCompatibleBitmap(Canvas->Handle, 18, 18);
SelectObject(dc, memBM);  //内存DC转换成位图格式,并选中

//用TCanvas来画图
c->Handle       = dc;     //画布绑定创建的dc
c->Pen->Color   = clGreen;//在TCanvas画图
c->Brush->Color = clRed;
c->FillRect(r);
//将图形复制出来,画到指定的目标上去,一般为窗口或控件等界面,此处为this即窗口
this->Canvas->CopyRect(r, c, r);

//释放内存位图
DeleteObject(memBM);
//释放内存设备DC
DeleteDC(dc);

//如果是由GetDC获取的内存实体,释放时,如下两者选其一
//DeleteDC(dc);
//ReleaseDC(this->Handle,dc);
delete c;

真正的内存设备,是由CreateCompatibleDC创建的,它是绘图的实体,其他函数只是对其进行的操作。TCanvas类和dc绑定后,便于调用TCanvas类中的方法来绘图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值