填充区域

应用程序通过调用 FillRgn 函数并提供标识特定画笔的句柄来填充区域的内部。 当应用程序调用 FillRgn 时,系统将使用指定设备上下文的当前填充模式,使用画笔填充区域。 有两种填充模式:交替和缠绕。 应用程序可以通过调用 SetPolyFillMode 函数来设置设备上下文的填充模式。 应用程序可以通过调用 GetPolyFillMode 函数检索设备上下文的当前填充模式。

下图显示了两个相同的区域:一个使用备用模式填充,另一个使用绕组模式填充。

显示两个五角星的插图:一个只填充点,另一个完全填充

备用模式

若要确定指定备用模式时系统突出显示的像素,请执行以下测试:

  1. 选择区域内部的像素。
  2. 从该像素向无穷的方向绘制一条虚射射线。
  3. 每次光线与边界线相交时,都会递增计数值。

如果计数值为奇数,系统将突出显示像素。

缠绕模式

若要确定指定绕组模式时系统突出显示的像素,请执行以下测试:

  1. 确定绘制每个边界线的方向。
  2. 选择区域内部的像素。
  3. 从像素向无穷大绘制一个正 x 方向的虚线。
  4. 每次光线与正 y 分量与边界线相交时,都会递增计数值。 每次光线与负 y 分量与边界线相交时,计数值都会递减。

如果计数值为非零,则系统突出显示像素。