区域 (GDI+)
区域是显示图面的一部分。 区域可以是简单的(单个矩形)或复杂的(多边形和闭合曲线的组合)。 下图显示了两个区域:一个由矩形构成,另一个由路径构成。
区域通常用于剪裁和点击测试。 剪裁涉及将绘图限制为屏幕的特定区域,通常是需要更新的屏幕部分。 命中测试涉及检查在按下鼠标按钮时光标是否位于屏幕的某个区域。
可以从矩形或路径构造区域。 还可以通过组合现有区域来创建复杂区域。 Region 类提供以下用于组合区域的方法:Intersect、Union、Xor、Exclude 和 Region::Complement。
两个区域的交集是同属这两个区域的所有点的集合。 并集是属于一个或另一个或两个区域的所有点的集合。 区域补充是不属于该区域的所有点的集合。 下图显示了上图中两个区域的交集和联合。
应用于一对区域的 Xor 方法生成一个区域,该区域包含属于一个区域或另一个区域的所有点,但不能同时属于这两个区域。 应用于一对区域的 Exclude 方法会生成一个区域,该区域包含第一个区域中不在第二个区域中的所有点。 下图显示了将 Xor 和 Exclude 方法应用于本主题开头所示的两个区域时产生的区域。
若要填充区域,需要 一个 Graphics 对象、一个 Brush 对象和一个 Region 对象。 Graphics 对象提供 Graphics::FillRegion 方法,Brush 对象存储填充的属性,如颜色或图案。 以下示例使用纯色填充区域。
myGraphics.FillRegion(&mySolidBrush, &myRegion);