Wpf 创建由多条单线组成的自定义形状

Wpf 创建由多条单线组成的自定义形状,wpf,shape,Wpf,Shape,我想创建一个简单的十字架,它由两条线组成。线条应该有不同的颜色。我创建了一个继承表单形状的类。此类包含两条直线并计算直线的坐标。我已经读到,如果我从Shape继承,我必须实现DefiningGeometry属性。但是如何返回该属性的get部分中的两行呢 提前谢谢。听起来您可以使用来组合您的线路。。。唯一的问题是您需要使用类而不是Lines。您可以这样做(从MSDN上链接的CombinedGeometry页面): 该画笔将显示为两行上的实际颜色不同: 然后,您需要做的就是将其转换为C#以从Def

我想创建一个简单的十字架,它由两条线组成。线条应该有不同的颜色。我创建了一个继承表单形状的类。此类包含两条直线并计算直线的坐标。我已经读到,如果我从Shape继承,我必须实现DefiningGeometry属性。但是如何返回该属性的get部分中的两行呢


提前谢谢。

听起来您可以使用来组合您的线路。。。唯一的问题是您需要使用类而不是
Line
s。您可以这样做(从MSDN上链接的
CombinedGeometry
页面):

画笔
将显示为两行上的实际颜色不同:


然后,您需要做的就是将其转换为C#以从
DefiningGeometry
属性返回它。请使用链接页面和MSDN页面中的示例来帮助您完成此操作。

您可以在填充矩形的绘图画笔中通过两个几何图形绘制两条不同颜色的线:

<Rectangle Width="20" Height="20">
    <Rectangle.Fill>
        <DrawingBrush>
            <DrawingBrush.Drawing>
                <DrawingGroup>
                    <GeometryDrawing Geometry="M0,-10 L0,10">
                        <GeometryDrawing.Pen>
                            <Pen Brush="Blue" Thickness="3"/>
                        </GeometryDrawing.Pen>
                    </GeometryDrawing>
                    <GeometryDrawing Geometry="M-10,0 L10,0">
                        <GeometryDrawing.Pen>
                            <Pen Brush="Red" Thickness="3"/>
                        </GeometryDrawing.Pen>
                    </GeometryDrawing>
                </DrawingGroup>
            </DrawingBrush.Drawing>
        </DrawingBrush>
    </Rectangle.Fill>
</Rectangle>


为什么不在其
数据
属性中使用具有适当几何图形的路径?看。当你说“线条应该有不同的颜色”时,你是指十字架上的两条线吗?是的。一条线应该是红色的,另一条线应该是蓝色的,那么形状和路径都不是一个好的选择,因为它们只有一个
笔划
笔刷。用一个简单的UserControl来代替怎么样?然后我会看看UserControl。。。谢谢你的提示。
GeometryGroup
可能比
CombinedGeometry
更简单(更容易理解)+1你说得对。。。这更容易。抢手货谢谢,我已经更新了我的答案。谢谢你的回答。很好的解决方案。
<Path StrokeThickness="5" Fill="Blue" HorizontalAlignment="Center" VerticalAlignment="Center">
    <Path.Data>
        <GeometryGroup>
            <LineGeometry StartPoint="50,0" EndPoint="50,100"  />
            <LineGeometry StartPoint="0,50" EndPoint="100,50"  />
        </GeometryGroup>
    </Path.Data>
    <Path.Stroke>
        <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
            <GradientStop Color="LightGreen" Offset="0" />
            <GradientStop Color="LightGreen" Offset="0.475" />
            <GradientStop Color="Red" Offset="0.475" />
            <GradientStop Color="Red" Offset="0.525" />
            <GradientStop Color="LightGreen" Offset="0.525" />
            <GradientStop Color="LightGreen" Offset="0" />
        </LinearGradientBrush>
    </Path.Stroke>
</Path>
<Rectangle Width="20" Height="20">
    <Rectangle.Fill>
        <DrawingBrush>
            <DrawingBrush.Drawing>
                <DrawingGroup>
                    <GeometryDrawing Geometry="M0,-10 L0,10">
                        <GeometryDrawing.Pen>
                            <Pen Brush="Blue" Thickness="3"/>
                        </GeometryDrawing.Pen>
                    </GeometryDrawing>
                    <GeometryDrawing Geometry="M-10,0 L10,0">
                        <GeometryDrawing.Pen>
                            <Pen Brush="Red" Thickness="3"/>
                        </GeometryDrawing.Pen>
                    </GeometryDrawing>
                </DrawingGroup>
            </DrawingBrush.Drawing>
        </DrawingBrush>
    </Rectangle.Fill>
</Rectangle>