2010-07-01 53 views
0

有一个奇怪的。我有两个不透明度为0.7的椭圆。我想要做的是两个椭圆交叉的地方,显示不同的颜色。在旧的WF图像中,我会穿过每个像素和交换的颜色,但我不确定如何在Silverlight中使用图层来完成此操作。有人有主意吗?结合两个半透明椭圆

谢谢!

回答

0

编辑:对不起,有各种元素的属性有一些错误。经过测试:

创建一个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定义区域。