⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled-34.txt

📁 mfc 教程
💻 TXT
字号:
                                                                    第2章在窗口中绘图63
      CPenpen(PS.NULL, 0,(RGB(0, 0, 0》);
      dc.Selectob3ect(&pen);
      CBrush brush(RGB(192, 192, 192》;
      dc.Selectobject(&brush);
      dc.Ellinse(0,0,100,100)i
但是由于NULL画笔和浅灰色画刷是备用对象,所以更好的方法是:
      dc.Selectstockob3ect(NULL.PEN);
      dc.SelectstockobDect(LTGRAY_BRUSH);
      dc.Ellipse(0,0,IOO,100);
    下面的程序代码给出了第三种画这个圆的方法。这次备用对象被赋给CPen和CBrush,
而不是直接选人设备描述表:
        CPen pen;
      pen.Createstockobject(NULLPEN);
      dc.Selectoboect(&yen);
        cBIUSh blllsh;
      brush.CreatestockobDect(LTGRAY.BRUSH);
      dc.Selectobject(&brush);
      dc.Ellipse(0, 0, 10o, 10o);
    用哪种方法还要看自己的具体情况。第二种方法是最简短的。由于它没有创建任何
GDI对象,所以选用这种方法绝对不会出现异常。
2.2.10删除GDI对象
    由CGdiobject派生类创建的画笔、画刷和其他对象都要占用内存资源,因此在使用完毕
之后一定要删除它们。如果在栈上创建CPen、CBrush、CFont或其他CGdiobject,那么在
CGdiobject超出范围时,相关的   GDI对象就会自动被删除。如果用   new在堆上创建了一个
Ctaliobject,则在特定时刻一定要删除它,以便调用它的析构函数。与   CGdiobject相关联的
GDI对象可以通过调用 CGdiohject:: Deleteobject被显式地删除。如果是备用对象,即便是由
Createstockobject创建的备用对象,也没必要专门去删除它。
    在16位Windows中,GDI对象经常引发资源泄漏问题。这时候因为某些程序不能删除
它们创建的 GDI对象,因此由 Prog。m Manager报告的可用系统资源(Free System Resou。es)的
数量会随着应用程序的不断打开和终止渐渐减少。所有32位Windows跟踪程序所分配的
资源,并在程序结束的时候删除它们。然而,在用不着GDI对象时删除这些对象依旧是很必
要的。这样,在应用程序运行时GDI才不至于超出内存。试想如果每次调用OnPairit处理程
序时都要创建10个画笔和画刷,但又没能删除它们,会产生什么问题呢?经过一段时间,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -