第五章 图形基础part3

 5.4绘制填入区域

Windows将HBRUSH定义为画刷的句柄hBrush = GetStockObject(GRAY_BRUSH);呼叫SelectObject将它选进设备内容SelectObject(hdc, hBrush);画一个没有边界框的图形SelectObject(hdc, GetStockObject(NULL_PEN)) ;画出图形的边界框,但不填入内部SelectObject(hdc, GetStockobjec(NULL_BRUSH);

Polygon函数和多边形填入方式:

Polygon是第六个画带边界框的填入图形的函数Polygon(hdc, apt, iCount);apt参数是POINT结构的一个数组,iCount是点的数目。

PolyPolygon(hdc, apt, aiCounts, iPolyCount);该函数绘制多个多边形。最后一个参数给出了所画的多边形的个数。

填入内部的方式SetPolyFillMode(hdc, iMode);多边形填入方式有ALTERNATE和WINDING。

用画刷填入内部:

Rectangle、RoundRect、Ellipse、Chord、Pie、Polygon和PolyPolygon图形的内部是用选进设备内容的目前画刷(也称为「图样」)来填入的。画刷是一个8×8的位图,它水平和垂直地重复使用来填入内部区域。

hBrush = CreateSolidBrush (crColor);该函数创建一个具有指定颜色的逻辑刷子。
hBrush = CreateHatchBrush (iHatchStyle, crColor) ; 「影线标记(hatch marks)」来建立画刷。
使用CreatePatternBrush和CreateDIBPatternBrushPt建立自己的位图画刷。
hBrush = CreateBrushIndirect (&logbrush) ; 变量logbrush是一个型态为LOGBRUSH(「逻辑画刷」)的结构。
使用DeleteObject函数删除所建立的画刷。

ALTWIND

 

 

5.5GDI 映像方式

几乎所有GDI函数中,这些坐标值使用的都是一种「逻辑单位」 。Windows必须将逻辑单位转换为「设备单位」,即图素。这种转换是由映像方式、窗口和视端口的原点以及窗口和视端口的范围所控制的。Windows定义了8种映像方式,下面是如何设定映射方式和获取映射方式的方法。

SetMapMode(hdc, iMapMode);
iMapMode = GetMapMode (hdc);

内定映像方式为MM_TEXT在这种映像方式下,逻辑单位与实际单位相同,这样我们可以直接以图素为单位进行操作。如果映像方式设定为MM_LOENGLISH则逻辑单位是百分之一。不变的规律是窗口原点总被映设到视端口原点。

「视端口」是依据设备坐标(图素)的。
「窗口」是依据逻辑坐标的,逻辑坐标可以是图素、毫米、英寸或者您想要的任何其它单位。

设定映像模式为MM_LOENGLISH,并将视端口原点改为显示窗口中央:
SetMapMode (hdc, MM_LOENGLISH) ;
SetViewportOrgEx (hdc, cxClient / 2, cyClient / 2, NULL) ;
cxClient,cyClient为显示窗口宽和高,由WM_SIZE的wParam参数传回。

WHATSIZE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值