如果x2大于125020,则无法在画布上绘制水平线

本文关键字:水平线 绘制 大于 x2 125020 如果 | 更新日期: 2023-09-27 18:08:43

我试图在画布上绘制线条,但如果x2的值大于125020,我无法绘制它。请在下面找到XAML代码。如果x2的值等于或低于125020,我就能看到行。

<ScrollViewer Name="C1_S" Grid.Row="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" VerticalAlignment="Bottom"  Grid.ColumnSpan="2" >
                    <Canvas Name="canvas_core0" Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Bottom" Height="640" Width="1000000" MouseWheel="Canvas_MouseWheel" >
                        <Line Stroke="Black" X1="20" Y1="20" X2="20" Y2="620" StrokeEndLineCap="Triangle" StrokeDashCap="Triangle" />
                        <Line Stroke="Black" X1="20" Y1="220" X2="125021"  Y2="220" StrokeEndLineCap="Triangle" StrokeDashCap="Triangle" />
                        <Line Stroke="Black" X1="20" Y1="420" X2="{Binding ElementName=canvas_core0, Path=Width}"  Y2="420" StrokeEndLineCap="Triangle" StrokeDashCap="Triangle" />
                        <Line Stroke="Black" X1="20" Y1="620" X2="{Binding ElementName=canvas_core0, Path=Width}"  Y2="620" StrokeEndLineCap="Triangle" StrokeDashCap="Triangle" />
                        <Canvas.Background>
                            <DrawingBrush TileMode="Tile" Viewport="0,20,40,40" ViewportUnits="Absolute">
                                <DrawingBrush.Drawing>
                                    <GeometryDrawing>
                                        <GeometryDrawing.Geometry>
                                            <RectangleGeometry Rect="0,0,50,50"/>
                                        </GeometryDrawing.Geometry>
                                        <GeometryDrawing.Pen>
                                            <Pen Brush="Gray" Thickness=".1"/>
                                        </GeometryDrawing.Pen>
                                    </GeometryDrawing>
                                </DrawingBrush.Drawing>
                            </DrawingBrush>
                        </Canvas.Background>
                        <Canvas.RenderTransform>
                            <MatrixTransform/>
                        </Canvas.RenderTransform>
                    </Canvas>
                </ScrollViewer>

有人能帮忙吗?在画布上作画时,线条的长度有限制吗?

如果x2大于125020,则无法在画布上绘制水平线

嗯,肯定是WPF绘制长水平线的错误。

我没有一个真正的答案给你,但一个工作可能是不画水平线。相反,绘制接近水平的线条。如果你改变Y1或Y2,但不是两者都改变,从"220"到"220.00001",那么这条线是可见的。请注意,"220.000001"(又多了一个0)没有被绘制出来,所以这似乎是另一个限制。

我用X2="125021000"(加了三个0)测试了一下,行仍然显示。

增加StrokeThickness(即使只是一点点)也是有效的。

我知道这个答案有点令人不满意,但如果你是绝望的,可能会有所帮助,至少是一个线索。

我试着玩UseLayoutRoundingSnapsToDevicePixels,但不能使它工作。

有趣。