mfc的dc绘图总结

dc类似于画板,而bitmap类似于画布,要画东西两个东西是基础,除非该dc是设备dc

一:dc的使用

1.初始化dc

初始化画板:HDC memDc=CreateCompatibleDC(HDC dc);//dc可以用NULL

初始化位图:HBITMAP memBitmap=CreateBitmap( int nWidth, int nHeight, UINT nPlanes, UINT nBitCount, CONST VOID *lpBits);nWidth 表示位图宽度,nHeight 表示高度,nPlanes表示使用的颜色位面数目使用1即可,nBitCount表示单个像素位数使用32,LpvBits:指向颜色数据数组指针。如果该参数为NULL,将不对新生成的位图进行初始化。

选择画布:HGDIOBJECT oldObject=SelectObject(memDc,memBitmap);//此时才可以对memDc进行绘画操作,绘画的效果都是显像在位图上。

2.释放dc

要设置旧的HGDIOBJECT设置回dc :SelectObject(memDc,oldObject);

再删除dc: DeleteDc(memDc);

3.dc绘图

a:画点:SetPixel(HDC dc,int x,int y,COLORREF crColor);//crcolor可以使用RGB(r,g,b);来设置具体颜色

b:画线:LineTo(HDC dc,int x,int y);

c:画矩阵:Rectangle(HDC dc,int x1,int y1,int x2,int y2);

d:dc之间的拷贝:BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop);

hdcDest:目标dc

nXDest:拷贝到目标dc某个区域的左上角x坐标

nYDest:拷贝到目标dc某个区域的左上角y坐标

nWidth:拷贝到目标dc某个区域宽度

nHeight:拷贝到目标dc某个区域高度

hdcSrc:源dc

nXSrc:指定从原dc的某个左上角的x坐标为起点开始拷贝

nYSrc:指定从原dc的某个左上角的y坐标为起点开始拷贝

dwRop:操作方式,如SRCCOPY表示直接拷贝,其他方式可以根据SRCCOPY定义查看其他方式

e:其他形状:

画椭圆:BOOL Ellipse(iHDC dc,nt x1,int y1,int x2,int y2);

写入文本:BOOL TextOut(HDC dc,int x,int y,const CString& str);





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值