有一个奇怪的。我有两个不透明度为0.7的椭圆。我想要做的是两个椭圆交叉的地方,显示不同的颜色。在旧的WF图像中,我会穿过每个像素和交换的颜色,但我不确定如何在Silverlight中使用图层来完成此操作。有人有主意吗?结合两个半透明椭圆
谢谢!
有一个奇怪的。我有两个不透明度为0.7的椭圆。我想要做的是两个椭圆交叉的地方,显示不同的颜色。在旧的WF图像中,我会穿过每个像素和交换的颜色,但我不确定如何在Silverlight中使用图层来完成此操作。有人有主意吗?结合两个半透明椭圆
谢谢!
编辑:对不起,有各种元素的属性有一些错误。经过测试:
创建一个Path并将Path.Data放置为一个GeometryGroup,其中两个EllipseGeometries作为子元素。将GeometryGroup.FillRule设置为“EvenOdd”,以便两个椭圆覆盖的区域都未填充,并将“填充”设置为您想使用椭圆的颜色(此处为AliceBlue)。
将该路径放入带有“背景”属性(如边框)的控件中,并将该背景设置为您希望两个椭圆覆盖的区域(此处为黄色)的颜色。
然后,将剪辑设置为FillRule设置为“非零”的同一GeometryGroup,以防止椭圆周围的区域也用背景颜色绘制。
<Border Background="Yellow">
<Path Fill="AliceBlue" Stroke="Black" StrokeThickness="4">
<Path.Data>
<GeometryGroup FillRule="EvenOdd">
<EllipseGeometry Center="100,100" RadiusX="40" RadiusY="80" />
<EllipseGeometry Center="100,100" RadiusX="80" RadiusY="40" />
</GeometryGroup>
</Path.Data>
</Path>
<Border.Clip>
<GeometryGroup FillRule="Nonzero">
<EllipseGeometry Center="100,100" RadiusX="40" RadiusY="80" />
<EllipseGeometry Center="100,100" RadiusX="80" RadiusY="40" />
</GeometryGroup>
</Border.Clip>
</Border>
如果同时需要椭圆以不同的颜色被涂用两个边界和路径的对象,使用相同的GeometryGroup与“EVENODD”,并设置每个Border.Clip的一个EllipseGeometry对象。
如果您需要更详细的定义,请使用PathGeometry而不是GeometryGroup并使用ArcSegments定义区域。