当我们在 Grid WPF 的右端绘制线条时,线条的 StrokeThickness 无法正常工作

Posted

技术标签:

【中文标题】当我们在 Grid WPF 的右端绘制线条时,线条的 StrokeThickness 无法正常工作【英文标题】:StrokeThickness of Line is not working properly when we draw the line at the right end of the Grid WPF 【发布时间】:2020-10-16 01:37:34 【问题描述】:

我正在尝试将线条的 StrokeThickness 设置为大于 1。但 StrokeThickness 未正确应用在网格右侧的线条中。左侧线工作正常。 代码sn-p

<Grid
        x:Name="BottomRightPanel"
        Width="500"
        HorizontalAlignment="Center"
        VerticalAlignment="Center"
        Background="Yellow">
        <Line
            x:Name="line"
            Stroke="Black"
            StrokeThickness="5"
            X1="0"
            X2="0"
            Y1="0"
            Y2="50" />
        <Line
            x:Name="line1"
            Stroke="Black"
            StrokeThickness="5"
            X1="500"
            X2="500"
            Y1="0"
            Y2="50">
        </Line>
    </Grid>

截图:

Line is cropped

【问题讨论】:

笔划画在Line的中间,即左Line的左半边和右Line的右半边在Grid的边界之外。当您在网格上设置ClipToBounds="True" 时,这一点变得更加明显。右边的部分仍然被ClipToBounds="False" 切断似乎很奇怪。看起来像一个错误。 您显然可以通过使用2.5497.5 的x 值来避免这种情况 这些线是用于任何特定的东西,还是只是固定在网格两侧的装饰? 【参考方案1】:

减小右侧线条的 X1 和 X2 值以考虑笔画粗细:

<Line
    x:Name="line1"
    Stroke="Black"
    StrokeThickness="5"
    X1="497.5"
    X2="497.5"
    Y1="0"
    Y2="50">

或者使用Border

<Border Width="500" Background="Yellow"
        BorderBrush="Black" BorderThickness="5 0 5 0"
        HorizontalAlignment="Center"
        VerticalAlignment="Center">
    <Grid>
        <TextBlock />
    </Grid>
</Border>

【讨论】:

@suganya:你试过这个还是发生了什么?【参考方案2】:

根据我的观察,您为 5 之类的线提供了一些粗细,尽管由于添加的粗细而绘制正确,但它绘制的 X 位置为 505。

你可以在下面调整X位置

<Line
            x:Name="line"
            Stroke="Black"
            StrokeThickness="5"
            X1="0"
            X2="0"
            Y1="0"
            Y2="50" />
        <Line
            x:Name="line1"
            Stroke="Black"
           StrokeThickness="5"
            X1="495"
            X2="495"
            Y1="0"
            Y2="50"/>

或者像下面这样添加

<Canvas>
            <Line
            x:Name="line"
            Stroke="Black"
            StrokeThickness="5"
            X1="0"
            X2="0"
            Y1="0"
            Y2="50" />
            <Line
            x:Name="line1"
            Canvas.Left="500"
            Stroke="Black"
            StrokeThickness="5"
            X1="0"
            X2="0"
            Y1="0"
            Y2="50" />
        </Canvas>
保持相同的线图值并使用 Canvas.Left 将其移到最左边

【讨论】:

以上是关于当我们在 Grid WPF 的右端绘制线条时,线条的 StrokeThickness 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

C#wpf里面怎么绘制线条

如何让用户在 WPF 中使用画布绘制线条

当使用洪水填充算法填充颜色后绘制线条时,填充颜色消失

如何在 WPF 自定义装饰器中用线条排列拇指

Direct3D 线条粗细

Canvas:橡皮筋线条绘制