|
的位元运算,并再次使用上表描述的16种ROP2代码。R2_NOT绘图方式总是翻转目标色彩来决定线的颜色,而不管画笔的色彩是什么。例如,在青色目标上的线会变成紫色。R2_NOT方式总是产生可见的画笔,除非画笔在中等灰度的背景上绘图。我将在第七章的BLOKOUT程式中展示R2_NOT绘图方式的使用。
绘制填入区域
现在再更进一步,从画线到画图形。Windows中七个用来画带边缘的填入图形的函式列於表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