图形基础(四十六)

2010-12-30 21:10:52 · 作者: · 浏览: 40713
的位元运算,并再次使用上表描述的16种ROP2代码。R2_NOT绘图方式总是翻转目标色彩来决定线的颜色,而不管画笔的色彩是什么。例如,在青色目标上的线会变成紫色。R2_NOT方式总是产生可见的画笔,除非画笔在中等灰度的背景上绘图。我将在第七章的BLOKOUT程式中展示R2_NOT绘图方式的使用。

绘制填入区域
 

现在再更进一步,从画线到画图形。Windows中七个用来画带边缘的填入图形的函式列於表5-3中。

表5-3
函式图形
Rectangle 直角矩形 Ellipse 椭圆 RoundRect 圆角矩形 Chord 椭圆周上的弧,两端以弦连接 Pie 椭圆上的圆形图 Polygon 多边形 PolyPolygon 多个多边形

Windows用装置内容中选择的目前画笔来画图形的边界框,边界框还使用目前背景方式、背景色彩和绘图方式,这跟Windows画线时一样。关於直线的一切也适用於这些图形的边界框。

图形以目前装置内容中选择的画刷来填入。内定情况下,使用现有物件,这意味著图形内部将画为白色。Windows定义六种现有画刷:WHITE_BRUSH、LTGRAY_BRUSH、GRAY_BRUSH、DKGRAY_BRUSH、BLACK_BRUSH和NULL_BRUSH (也叫HOLLOW_BRUSH)。您可以将任何一种现有画刷选入您的装置内容中,就和您选择一种画笔一样。Windbws将HBRUSH定义为画刷的代号,所以可以先定义一个画刷代号变数:

HBRUSH hBrush ;

您可以通过呼叫GetStockObject来取得GRAY_BRUSH的代号:

hBrush = GetStockObject (GRAY_BRUSH) ;

您可以呼叫SelectObject将它选进装置内容:

SelectObject (hdc, hBrush) ;

现在,如果您要画上表中的任一个图形,则其内部将为灰色。

如果您想画一个没有边界框的图形,可以将NULL_PEN选进装置内容:

SelectObject (hdc, GetStockObject (NULL_PEN)) ;

如果您想画出图形的边界框,但不填入内部,则将NULL_BRUSH选进装置内容:

SelectObject (hdc