结合两个半透明椭圆

时间:2010-07-01 16:14:32

标签: c# silverlight

有一个奇怪的。我有两个椭圆,不透明度为0.7。我想做的是两个椭圆交叉的地方,显示不同的颜色。在一个旧的WF图像中,我已经浏览了每个像素并交换了颜色,但我不知道如何使用Silverlight中的图层执行此操作。有人有什么想法吗?

谢谢!

1 个答案:

答案 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定义区域。