GDI对象使用的几点体会

Show_Mike 2008-04-18 05:01:37
虽然新的GDI+完全与设备无关了,但是熟悉传统的GDI对这种图形接口的程序处理还是很有好处的.本人在学习这方面的内容过程中,得到了一些粗浅的体会,与各位共享:
1.作为与设备无关的中低层对象,GDI类实际接口是硬件设备的驱动程序,而且封装后,程序员所需要关注的 东东仅仅有一些基本参数而已;
2.作为PEN,BRUSH,其基本可以设置(改变)的属性只有:Style,width,color;
3.设置的方法:1)直接在对象定义时给定,如CPen NewPen(PS_DASH,2,RGB(128,0,0));
2)采用成员函数设定,如NewPen.CreatePen(PS_DASH,2,RGB(128,0,0));
4.调用的方法:采用pDC->SelectObject(&NewPen);
5.最后,对自定义画笔来说还需要将内存资源释放出来,如采用DeleteObject().


说明:对库存类型,处理稍有一点差异,如函数为:CreateStockObject(...);同时,最后需要将指针回归到系统默认的情况:pDC->SelectStockObject(OldPen).

希望各位高手发表意见,共同进步!
...全文
77 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
webipstin 2008-04-18
  • 打赏
  • 举报
回复
这些只有在SDK中才能学到
菜牛 2008-04-18
  • 打赏
  • 举报
回复
使用GDI最重要的一点是:使用完最好恢复原样。
所以你说的第4点,应该和后面一样,每次都要保存返回原来的对象指针,用完后恢复,才能删除GDI资源。如:
CPen pen(PS_SOLID, 0, RGB(...));
CPen* pOldPen = pDC->SelectObject(&pen);

pDC->绘图

pDC->SelectObject(pOldPen);
pen.DeleteObject(); //其实这一步倒不是必须,因为CPen析构函数会调用DeleteObject;
对于SDK编程也一样

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧