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类中的方法来绘图。