当我们在 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.5
和497.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 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章