使用WPF对象在另一个中“打孔”?

时间:2009-04-11 23:44:14

标签: wpf xaml bitmapeffect

我有一个椭圆,它只是一个圆圈。我的问题是我想从较大圆圈的中间切出一个圆形孔,似乎没什么用。我尝试过不透明的面具,但那些都不起作用。

为了使事情更复杂,大圆圈有一个DropShadowEffect。但由于圆圈略微透明,你可以看到它后面有一个大阴影圆圈。这不是模型的样子,我想知道是否有办法让阴影只出现在圆的边缘,无论圆圈是多么透明。

谢谢!

2 个答案:

答案 0 :(得分:5)

就像这样:

<Canvas>
<Path Stroke="Black">
  <Path.Data>
    <CombinedGeometry GeometryCombineMode="Exclude">
      <CombinedGeometry.Geometry1>
        <EllipseGeometry Center="100,100" RadiusX="100" RadiusY="100"></EllipseGeometry>
      </CombinedGeometry.Geometry1>
      <CombinedGeometry.Geometry2>
        <EllipseGeometry Center="100,100" RadiusX="80" RadiusY="80"></EllipseGeometry>
      </CombinedGeometry.Geometry2>
    </CombinedGeometry>
  </Path.Data>
</Path>
</Canvas>

对于阴影:这也应该解决,因为生成的对象实际上是一个整体在其中的圆圈,而不仅仅是一个不透明 - “技巧”

答案 1 :(得分:1)

不使用Ellipse,而是使用Path,并使用Exclude GeometryCombineMode将Path.Data设置为由两个椭圆组成的CombinedGeometry。