• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

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).

希望各位高手发表意见,共同进步!
...全文
38 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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编程也一样
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-04-18 05:01
社区公告

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