我正在尝试为我正在WPF中工作的应用程序创建一个维恩图控件。我只是想在此刻创建一个双向维恩,所以两个圆圈相互重叠。
我正在尝试使用两种功能:
1.控制器必须调整维恩的大小以填充可用空间
2.维恩的每个部分都应该输入鼠标并使用不同的颜色。
我可以同时做这两件事......
目前我的代码看起来像这样:
<Grid>
<Path Stretch="Uniform" Fill="Blue" >
<Path.Data>
<GeometryGroup>
<CombinedGeometry GeometryCombineMode="Exclude" >
<CombinedGeometry.Geometry1>
<EllipseGeometry Center="-25, 0" RadiusX="50" RadiusY="50"/>
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry Center="25, 0" RadiusX="50" RadiusY="50"/>
</CombinedGeometry.Geometry2>
</CombinedGeometry>
<CombinedGeometry GeometryCombineMode="Exclude" >
<CombinedGeometry.Geometry1>
<EllipseGeometry Center="25, 0" RadiusX="50" RadiusY="50"/>
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry Center="-25, 0" RadiusX="50" RadiusY="50"/>
</CombinedGeometry.Geometry2>
</CombinedGeometry>
<CombinedGeometry GeometryCombineMode="Intersect">
<CombinedGeometry.Geometry1>
<EllipseGeometry Center="-25, 0" RadiusX="50" RadiusY="50"/>
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry Center="25, 0" RadiusX="50" RadiusY="50"/>
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</GeometryGroup>
</Path.Data>
</Path>
正如你所看到的,我正在为我的Venn部分使用Geometry对象,但我希望拥有Path对象,以便我可以支持交互和样式。这可能吗?有没有更好的方法呢?
谢谢!
答案 0 :(得分:3)
如果您将每个CombinedGeometry对象用作单独路径的数据,则可以获得不同的交互和颜色。为了使其正确调整大小,您可以将网格放在ViewBox而不是在路径上设置拉伸。这不会移动原点,因此您需要将椭圆移动到(50,50)和(100,50)的中心。
<Viewbox>
<Grid>
<Path Fill="Blue">
<Path.Data>
<CombinedGeometry GeometryCombineMode="Exclude">
<CombinedGeometry.Geometry1>
<EllipseGeometry Center="50, 50" RadiusX="50" RadiusY="50"/>
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry Center="100, 50" RadiusX="50" RadiusY="50"/>
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
<Path Fill="Red">
<Path.Data>
<CombinedGeometry GeometryCombineMode="Exclude" >
<CombinedGeometry.Geometry1>
<EllipseGeometry Center="100, 50" RadiusX="50" RadiusY="50"/>
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry Center="50, 50" RadiusX="50" RadiusY="50"/>
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
<Path Fill="Purple">
<Path.Data>
<CombinedGeometry GeometryCombineMode="Intersect">
<CombinedGeometry.Geometry1>
<EllipseGeometry Center="50, 50" RadiusX="50" RadiusY="50"/>
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry Center="100, 50" RadiusX="50" RadiusY="50"/>
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
</Grid>
</Viewbox>