四、Windows图形处理—绘制填入区域
现在再更进一步,从画线到画图形。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, GetStockobject (NULL_BRUSH) ;
        
您也可以自订画刷,就如同您自订画笔一样。我们将马上谈到这个问题。
