荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Second (石开), 信区: Program
标  题: 2.1 和GUI有关的各种对象
发信站: 荔园晨风BBS站 (Wed May 30 01:05:17 2001), 转信

2.1 和GUI有关的各种对象

在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(SelectStoc
kObject( 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 d
raw menus, dialog-box controls, and other text. In Windows versions 3.0 and
later, the system font is proportional width; earlier versions of Windows us
e a fixed-width system font.
SYSTEM_FIXED_FONT   The fixed-width system font used in Windows prior to ver
sion 3.0. This object is available for compatibility with earlier versions o
f Windows.
DEFAULT_PALETTE   Default color palette. This palette consists of the 20 sta
tic colors in the system palette.

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

--
                            既然热爱生命
                            那么,
                            一切都在意料之中。

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.28.190]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店