Use WPF object to 'punch' hole in another?

江枫思渺然 提交于 2019-12-12 17:31:32

问题


I've got an ellipse which is just a circle. My problem is I want to cut out a circle-shaped hole from the middle of the bigger circle and nothing seems to work. I've tried opacity masks and those did not work whatsoever.

To further complicate things, the big circle has a DropShadowEffect. But because the circle is slightly transparent, you can see a big shadowy circle behind it. This isn't really what the mockup looks like and I'm wondering if there's a way to get the shadow to only appear around the edges of the circle, no matter how transparent said circle is.

Thanks!


回答1:


Instead of using an Ellipse, use a Path, and have the Path.Data be a CombinedGeometry consisting of the two ellipses using the Exclude GeometryCombineMode.




回答2:


Like this for example :

<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>

For the shadow : this should be solved too, since the resulting object is actually a circle with a whole in it, instead of just an opacity- 'trick'



来源:https://stackoverflow.com/questions/740994/use-wpf-object-to-punch-hole-in-another

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!