Windows Programming 第五章 绘图基础

5.4绘制填充区域

        绘制线条的下一步就是如何填充一个封闭区域。下表列出了windows用于绘制带有边框的填充区域的7个函数:

函数名称图     形
Rectangle直角矩形
Ellipse椭圆
Chord一个弓形,由椭圆圆周上的弧和一根炫组成
Pie椭圆上一个扇形
Polygon多边形
RoundRec圆角矩形
PolyPolygon多个多边形
        Windows使用当前被选入设备环境的画笔来绘制图形的边框线。

        Windows使用当前选入设备环境的画刷来填充图形。默认情况下,使用的是备用对象WHITE_BRUSH,Windows定义了六种备用画刷WHITE_BRUSH,LTGRAY_BRUSH,GRAY_BRUSH,DKGRAY_BRUSH,BLACH_BRUSH和NULL_BRUSH(又称为HOLLOW_BRUSH)。可以将任何一种备用画刷选入设备环境。Windows定义画刷的句柄为HBRUSH类型,定义一个HBRUSH句柄变量:

                HBRUSH  hBrush;

获取GRAY_BRUSH句柄可以通过调用以下的GetStockObject函数实现:

                hBrush = GetStockObject(GRAY_BRUSH);

然后通过调用SelectObject函数将他选入设备环境:

                SelectObject(hdc,hBrush);

当绘制一个不含边框的矩形时,要把NULL_PEN画笔选入设备环境:

                SelectObject(hdc,GetStockObject(NULL_PEN));

如果只想绘制图形的边线,而不像填充图形的内部,可以将NULL_BRUSH选入设备环境:

                SelectObject(hdc,GetStockObject(NULL_BRUSH));

也可以像自定义画笔一样自定义画刷,这个我们很快会谈到这个问题。

5.4.1Polygon函数和多边形填充模式

        Polygon函数调用:

                polygon(hdc,apt,iCount);

参数apt是一个POINT结构的数组,iCount是点的个数,如果数组中的最后一个点和第一个点不同,则windows会再加一条线连接最后一个点和第一个点(这个在polyline函数中不会这么做)。

        PolyPolygon函数调用:

                PolyPolygon(hdc,apt,aiCounts,iPolyCount);

这个函数是绘制多个多边形,最后一个参数是绘制多边形的个数。对于每个多边形,第三个参数给出了多边形定点的个数,数组apt含有全部多边形的所有顶点。除了返回值外,这个函数在功能上等同于一下代码:

for ( int i = 0 ,int iAccum = 0; i < iPolyCount; i++)
	{
		Polygon(hdc,apt + iAccum,aiCounts[i]);
		iAccum += aiCounts[i];
	}
        Windows区域内部是如何填充的,这取决于多边形的填充模式。可以调用如下函数来设置:

                SetPolyFillMode(hdc,iMode);

默认情况的填充模式是ALTERNATE(交替),但是也可以将它设定为WINDING(螺旋)。












评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值