有一个奇怪的。我有两个椭圆,不透明度为0.7。我想做的是两个椭圆交叉的地方,显示不同的颜色。在一个旧的WF图像中,我已经浏览了每个像素并交换了颜色,但我不知道如何使用Silverlight中的图层执行此操作。有人有什么想法吗?
谢谢!
答案 0 :(得分:0)
编辑:抱歉,各种元素的属性存在一些错误。经过测试:
创建Path并将具有两个GeometryGroup作为子元素的EllipseGeometries作为Path.Data。将GeometryGroup.FillRule设置为“EvenOdd”,以便两个椭圆覆盖的区域未填充,并将“填充”设置为您希望椭圆具有的颜色(此处为:AliceBlue)。
将该Path添加到具有“Background”属性的Control中,如Border,并将Background设置为您希望椭圆所覆盖的区域所在的颜色(此处为:黄色)。
然后将Clip设置为相同的GeometryGroup,并将FillRule设置为“Nonzero”,以防止椭圆周围的区域也使用背景颜色绘制。
<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>
如果您需要使用两个Border和Path对象绘制两个椭圆,请使用相同的GeometryGroup和“EvenOdd”,并将Border.Clip中的每一个设置为一个EllipseGeometry对象。
如果您需要更详细的定义,请使用PathGeometry代替GeometryGroup,并使用ArcSegments定义区域。