h ( RGB (rand () % 256, rand () % 256, rand () % 256)) ; hdc = GetDC (hwnd) ; FillRect (hdc, &rect, hBrush) ; ReleaseDC (hwnd, hdc) ; DeleteObject (hBrush) ; }
这个程式在现在的电脑上执行得非常快,看起来都不像是一系列随机矩形了。程式使用我在上面讨论过的SetRect和FillRect函式,根据由C的rand函式得到的乱数决定矩形座标和实心画刷的色彩。我将在第二十章中提供这个程式的多执行绪版本。
建立和绘制剪裁区域
剪裁区域是对显示器上一个范围的描述,这个范围是矩形、多边形和椭圆的组合。剪裁区域可以用於绘制和剪裁,通过将剪裁区域选进装置内容,就可以用剪裁区域来进行剪裁(就是说,将可以绘图的范围限制为显示区域的一部分)。与画笔、画刷和点阵图一样,剪裁区域是GDI物件,您应该呼叫DeleteObject来删除您所建立的剪裁区域。
当您建立一个剪裁区域时,Windows传回一个该剪裁区域的代号,型态为HRGN。最简单的剪裁区域是矩形,有两种建立矩形的方法:
或者
您也可以建立椭圆剪裁区域:
或者
CreateRoundRectRgn建立圆角的矩形剪裁区域。
建立多边形剪裁区域的函式类似於Polygon函式:
point参数是一个POINT型态的结构阵列,iCount是点的数目,iPolyFillMode是ALTERNATE或者WINDING。您还可以用CreatePolyPolygonRgn来建立多个多边形剪裁区域。
那么,您会问,剪裁区域究竟有什么特别之处?下面这个函式才真正显示出了剪裁区域的作用:
|