区域 (GDI+)

区域是显示图面的一部分。 区域可以是简单的(单个矩形)或复杂的(多边形和闭合曲线的组合)。 下图显示了两个区域:一个由矩形构成,另一个由路径构成。

显示与不透明曲线形状重叠的透明矩形区域的插图

区域通常用于剪裁和点击测试。 剪裁涉及将绘图限制为屏幕的特定区域,通常是需要更新的屏幕部分。 命中测试涉及检查在按下鼠标按钮时光标是否位于屏幕的某个区域。

可以从矩形或路径构造区域。 还可以通过组合现有区域来创建复杂区域。 Region 类提供以下用于组合区域的方法:IntersectUnionXorExcludeRegion::Complement

两个区域的交集是同属这两个区域的所有点的集合。 并集是属于一个或另一个或两个区域的所有点的集合。 区域补充是不属于该区域的所有点的集合。 下图显示了上图中两个区域的交集和联合。

显示上图中区域交集及其交集的插图

应用于一对区域的 Xor 方法生成一个区域,该区域包含属于一个区域或另一个区域的所有点,但不能同时属于这两个区域。 应用于一对区域的 Exclude 方法会生成一个区域,该区域包含第一个区域中不在第二个区域中的所有点。 下图显示了将 Xor 和 Exclude 方法应用于本主题开头所示的两个区域时产生的区域。

图中显示了两个区域中的部件,但两者都不重叠,矩形部分不与曲线区域重叠

若要填充区域,需要 一个 Graphics 对象、一个 Brush 对象和一个 Region 对象。 Graphics 对象提供 Graphics::FillRegion 方法,Brush 对象存储填充的属性,如颜色或图案。 以下示例使用纯色填充区域。

myGraphics.FillRegion(&mySolidBrush, &myRegion);