0

当两个形状对象相互重叠时,WPF中是否有一种方法可以使对象的重叠部分用不同的画笔绘制?

4

1 回答 1

3

解决了。

您可以使用包含具有 EvenOdd 填充规则的 GeometryGroup 的几何图形。这会将任何重叠的项目绘制为白色。然后只需将另一个图像放在顶部,使用 CombinedGeometry 包含与 GeometryCombineMode 为 Intersect 的 Geometry 组相同的对象,这将在您的自定义画笔中突出显示相交。示例代码如下:

    <Grid>
    <Image Stretch="None">
        <Image.Source>
            <DrawingImage>
                <DrawingImage.Drawing>
                    <GeometryDrawing Brush="Red">
                        <GeometryDrawing.Pen>
                            <Pen Brush="Black" Thickness="3" />
                        </GeometryDrawing.Pen>
                        <GeometryDrawing.Geometry>
                            <GeometryGroup FillRule="EvenOdd">
                                <EllipseGeometry RadiusX="80" RadiusY="80" Center="0,0" />
                                <EllipseGeometry RadiusX="80" RadiusY="80" Center="40,0" />
                            </GeometryGroup>
                        </GeometryDrawing.Geometry>
                    </GeometryDrawing>
                </DrawingImage.Drawing>
            </DrawingImage>
        </Image.Source>
    </Image>
    <Image HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Stretch="None">
        <Image.Source>
            <DrawingImage>
                <DrawingImage.Drawing>
                    <GeometryDrawing Brush="LightBlue">
                        <GeometryDrawing.Geometry>
                            <CombinedGeometry GeometryCombineMode="Intersect">
                                <CombinedGeometry.Geometry1>
                                    <EllipseGeometry RadiusX="80" RadiusY="80" Center="0,0" />
                                </CombinedGeometry.Geometry1>
                                <CombinedGeometry.Geometry2>
                                    <EllipseGeometry RadiusX="80" RadiusY="80" Center="40,0" />
                                </CombinedGeometry.Geometry2>
                            </CombinedGeometry>
                        </GeometryDrawing.Geometry>
                    </GeometryDrawing>
                </DrawingImage.Drawing>
            </DrawingImage>
        </Image.Source>
    </Image>
</Grid>

谢谢!

于 2009-08-18T13:19:32.773 回答