【问题标题】:Can I change stroke color for specific line segments in the Canvas path?我可以更改画布路径中特定线段的笔触颜色吗?
【发布时间】:2017-05-01 23:28:34
【问题描述】:

我可以更改 Canvas 路径中特定线段的描边颜色吗?

<Grid>
    <Canvas x:Name="c">
        <Path x:Name="path" Stroke="Black" StrokeThickness="1">
            <Path.Data>
                <PathGeometry>
                    <PathFigure x:Name="figure" StartPoint="10,100">
                        <LineSegment x:Name="s0" Point="10,100"></LineSegment>
                        <LineSegment x:Name="s1" Point="100,100" />
                        <LineSegment x:Name="s2" Point="100,50" />
                        <LineSegment x:Name="s3" Point="150,10" />
                    </PathFigure>
                </PathGeometry>
            </Path.Data>
        </Path>
    </Canvas>
</Grid>

例如,如果我想更改 StartPoint 和 LineSegment s1 之间的线条路径的 Stroke 颜色,我该怎么做?

【问题讨论】:

    标签: c# wpf canvas


    【解决方案1】:

    每次更改颜色时,您都必须开始一条新路径。在 S1 之后停止路径,切换颜色,然后使用定义的新颜色开始一个新的 pathFigure。

    【讨论】:

    • LineSegment 中有一个属性——IsStroked。当它设置为 false 时,特定的 LineSegment 颜色会更改为透明,正如我所想的那样。当 IsStroked 属性设置为 false 时,也许我可以更改 LineSegmnet 的默认颜色,并能够操纵我想用不同颜色标记的每个段的颜色?
    • @Max Naumov 这听起来是个好主意。继续尝试并告诉我结果
    • 将 IsStroked 设置为 false 不会绘制透明的描边线段。相反,它根本不绘制线段,这是不同的。您无法设置未绘制线段的笔画。正如答案中所说,您必须创建一个新的 Path 元素
    【解决方案2】:

    您需要为每种颜色创建一个路径...正如您在建议中所说,要在 s0 和 s1 之间更改颜色必须是:

    <Grid>
        <Canvas x:Name="c">
            <Path x:Name="path1" Stroke="Black" StrokeThickness="1">
                <Path.Data>
                    <PathGeometry>
                        <PathFigure x:Name="figure" StartPoint="10,100">
                            <LineSegment x:Name="s0" Point="10,100"></LineSegment>
                        </PathFigure>
                    </PathGeometry>
                </Path.Data>
            </Path>
            <Path x:Name="path2" Stroke="Yellow" StrokeThickness="1">
                <Path.Data>
                    <PathGeometry>
                        <PathFigure x:Name="figure2" StartPoint="10,100">
                            <LineSegment x:Name="s1" Point="100,100" />
                            <LineSegment x:Name="s2" Point="100,50" />
                            <LineSegment x:Name="s3" Point="150,10" />
                        </PathFigure>
                    </PathGeometry>
                </Path.Data>
            </Path>
        </Canvas> </Grid>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-19
      • 2019-12-06
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 2012-03-20
      相关资源
      最近更新 更多