有两个同样的函式用於选取画笔和画刷。像前面提到的,WHATSIZE也使用MM_ANISTROPIC映射方式将逻辑单位设定为字元大小。
当WHATSIZE需要取得六种映射方式之一的显示区域的大小时,它保存目前的装置内容,设定一种新的映射方式,取得显示区域座标,将它们转换为逻辑座标,然後在显示资讯之前,恢复原映射方式。底下这些程式码在WHATSIZE的Show函式里:
图5-19显示了WHATSIZE的典型输出。
矩形、区域和剪裁
Windows包含了几种使用RECT(矩形)结构和「区域」的绘图函式。区域就是萤幕上的一块地方,它是矩形、多边形和椭圆的组合。
矩形函式
下面三个绘图函式需要一个指向矩形结构的指标:
在这些函式中,rect参数是一个RECT型态的结构,它包含有4个栏位:left、top、right和bottom。这个结构中的座标被当作逻辑座标。
FillRect用指定画刷来填入矩形(直到但不包含right和bottom座标),该函式不需要先将画刷选进装置内容。
FrameRect使用画刷画矩形框,但是不填入矩形。使用画刷画矩形看起来有点奇怪,因为对於我们所介绍过的函式(如Rectangle),其边线都是用目前画笔绘制的。FrameRect允许使用者画一个不一定为纯色的矩形框。该边界框为一个逻辑单位元宽。如果逻辑单位大於装置单位,则边界框将会为2个图素宽或者更宽。
InvertRect将矩形中所有图素翻转,1