和GUI有关的各种对象

原创 2003年07月24日 08:39:00
和GUI有关的各种对象
2001-10-03· · ··vchelp

  在Windows中有各种GUI对象(不要和C++对象混淆),当你在进行绘图就需要利用这些对象。而各种对象都拥有各种属性,下面分别讲述各种GUI对象和拥有的属性。

  字体对象CFont用于输出文字时选用不同风格和大小的字体。可选择的风格包括:是否为斜体,是否为粗体,字体名称,是否有下划线等。颜色和背景色不属于字体的属性。关于如何创建和使用字体在2.2 在窗口中输出文字中会详细讲解。

  刷子CBrush对象决定填充区域时所采用的颜色或模板。对于一个固定色的刷子来讲它的属性为颜色,是否采用网格和网格的类型如水平的,垂直的,交叉的等。你也可以利用8*8的位图来创建一个自定义模板的刷子,在使用这种刷子填充时系统会利用位图逐步填充区域。关于如何创建和使用刷子在2.3 使用刷子,笔进行绘图中会详细讲解。

  画笔CPen对象在画点和画线时有用。它的属性包括颜色,宽度,线的风格,如虚线,实线,点划线等。关于如何创建和使用画笔在2.3 使用刷子,笔进行绘图中会详细讲解。

  位图CBitmap对象可以包含一幅图像,可以保存在资源中。关于如何使用位图在2.4 在窗口中绘制设备相关位图,图标,设备无关位图中会详细讲解。

  还有一种特殊的GUI对象是多边形,利用多边形可以很好的限制作图区域或是改变窗口外型。关于如何创建和使用多边形在2.6 多边形和剪贴区域中会详细讲解。

  在Windows中使用GUI对象必须遵守一定的规则。首先需要创建一个合法的对象,不同的对象创建方法不同。然后需要将该GUI对象选入DC中,同时保存DC中原来的GUI对象。如果选入一个非法的对象将会引起异常。在使用完后应该恢复原来的对象,这一点特别重要,如果保存一个临时对象在DC中,而在临时对象被销毁后可能引起异常。有一点必须注意,每一个对象在重新创建前必须销毁,下面的代码演示了这一种安全的使用方法:

OnDraw(CDC* pDC) {
     CPen pen1,pen2;
     pen1.CreatePen(PS_SOLID,2,RGB(128,128,128));//创建对象
     pen2.CreatePen(PS_SOLID,2,RGB(128,128,0));//创建对象
     CPen* pPenOld=(CPen*)pDC->SelectObject(&pen1);//选择对象进DC
     drawWithPen1...
     (CPen*)pDC->SelectObject(&pen2);//选择对象进DC
     drawWithPen2...
     pen1.DeleteObject();//再次创建前先销毁
     pen1.CreatePen(PS_SOLID,2,RGB(0,0,0));//再次创建对象
     (CPen*)pDC->SelectObject(&pen1);//选择对象进DC
     drawWithPen1...
     pDC->SelectObject(pOldPen);//恢复
}

  此外系统中还拥有一些库存GUI对象,你可以利用CDC::SelectStockObject(SelectStockObject( int nIndex )选入这些对象,它们包括一些固定颜色的刷子,画笔和一些基本字体。

  • BLACK_BRUSH   Black brush.
  • DKGRAY_BRUSH   Dark gray brush.
  • GRAY_BRUSH   Gray brush.
  • HOLLOW_BRUSH   Hollow brush.
  • LTGRAY_BRUSH   Light gray brush.
  • NULL_BRUSH   Null brush.
  • WHITE_BRUSH   White brush.
  • BLACK_PEN   Black pen.
  • NULL_PEN   Null pen.
  • WHITE_PEN   White pen.
  • ANSI_FIXED_FONT   ANSI fixed system font.
  • ANSI_VAR_FONT   ANSI variable system font.
  • DEVICE_DEFAULT_FONT   Device-dependent font.
  • OEM_FIXED_FONT   OEM-dependent fixed font.
  • SYSTEM_FONT   The system font. By default, Windows uses the system font to draw menus, dialog-box controls, and other text. In Windows versions 3.0 and later, the system font is proportional width; earlier versions of Windows use a fixed-width system font.
  • SYSTEM_FIXED_FONT   The fixed-width system font used in Windows prior to version 3.0. This object is available for compatibility with earlier versions of Windows.
  • DEFAULT_PALETTE   Default color palette. This palette consists of the 20 static colors in the system palette.
  这些对象留在DC中是安全的,所以你可以利用选入库存对象来作为恢复DC中GUI对象。

  大家可能都注意到了绘图时都需要一个DC对象,DC(Device Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它。这个环境是设备无关的,所以你在对不同的设备输出时只需要使用不同的设备环境就行了,而作图方式可以完全不变。这也就是Windows耀眼的一点设备无关性。如同你将对一幅画使用照相机或复印机将会产生不同的输出,而不需要对画进行任何调整。DC的使用会穿插在本章中进行介绍。

[Visual C++系列]2.1 和GUI有关的各种对象

2.1 和GUI有关的各种对象 在Windows中有各种GUI对象(不要和C++对象混淆),当你在进行绘图就需要利用这些对象。而各种对象都拥有各种属性,下面分别讲述各种GUI对象和拥有的属性。 ...
  • bbdxf
  • bbdxf
  • 2011年08月06日 09:52
  • 564

应用在今天一天先后上线腾讯的三个平台,高兴。

应用的QQ空间地址:http://rc.qzone.qq.com/myhome/100633536 应用的朋友地址:http://apps.pengyou.com/100633536 应用的腾讯微...
  • Arcan
  • Arcan
  • 2012年06月11日 22:07
  • 2538

Python对象的三个属性

与Python对象有关的三个属性分别是身份,类型和值。id,type,value。
  • luolol
  • luolol
  • 2016年11月29日 09:31
  • 398

GUI_GUI概述和GUI与CLI的区别

GUI(图形用户界面) Graphical User Interface(图形用户接口) 用图形的方式,来显示计算机操作的界面,这样方便更直观。 CLI Command line User In...
  • L1585931143
  • L1585931143
  • 2017年03月27日 00:29
  • 611

Java GUI事件监听器

Java中,事件处理的基本思路: 1.一个yuan
  • lzm1340458776
  • lzm1340458776
  • 2014年07月11日 22:30
  • 2128

【Java GUI】Java面板基础:JPanel

面板有两种,普通面板(JPanel)和滚动面板(JScrollPane)Jpanel面板是一种通用容器,JPanel的作用是实现界面的层次结构,在它上面放入一些组件,也可以在上面绘画,将放有组件和有画...
  • Area_52
  • Area_52
  • 2015年06月08日 09:13
  • 1856

Java基本功练习十七GUI(图形用户界面基础【基本概念及其使用、三种布局管理器实现同样的框架练习】)

主要讲解GUI设计的基本概念及其用法和注意点,并用之进行设计满足用户需求的交互界面。...
  • xyb890826
  • xyb890826
  • 2014年12月30日 19:52
  • 3335

GUI测试点

界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给...
  • not_a_baby
  • not_a_baby
  • 2011年08月29日 11:12
  • 2590

控制台界面与GUI相比的优缺点

1、参见:http://zhidao.baidu.com/question/12810776.html 在VC里建一个win32 application和一个win32 console applica...
  • u010258605
  • u010258605
  • 2015年06月01日 12:24
  • 2641

uC/GUI 和 STemWin的区别

在国内做嵌入式系统的,开始入门OS的时候,大家应该都会选择uC/OS,为什么?因为代码开源且资料众多嘛。由于uC/OS的原因大家也一定接触了uC/GUI的嵌入式图形软件库。其实uC/Gui的核心代码并...
  • xingkonghxiaoyi
  • xingkonghxiaoyi
  • 2017年01月02日 15:56
  • 570
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:和GUI有关的各种对象
举报原因:
原因补充:

(最多只允许输入30个字)