画出不模糊的路径

时间:2016-10-21 19:06:45

标签: c# uwp

我有一条路径,如果没有某些背景可能没什么意义,但我需要那样

<Path StrokeThickness="2" Stroke="Blue" >
        <Path.Data>
            <PathGeometry>
                <PathFigure StartPoint="-10000,20">
                    <BezierSegment Point1="100,100" 
                                   Point2="120,120" 
                                   Point3="350, 350" />
                    <BezierSegment Point1="400,400" 
                                   Point2="450, 450" 
                                   Point3="200, 600" />
                </PathFigure>
            </PathGeometry>
        </Path.Data>
    </Path>

我注意到当我有一个很长的路径时,UWP默认优化绘制,我的路径变得像素化

enter image description here

我不想要这种行为,有没有办法禁用它? 我真的需要一条这样的道路,我不能改变它的长度以获得更好的质量。

在WPF中我得到了我需要的东西:

enter image description here

1 个答案:

答案 0 :(得分:6)

你在XAML中获得Blurry Lines的原因是你使用了 StartPoint =“ - 10000,20”。当Polyline有两个相距超过2048像素的点时,我们的WinRT会出现渲染大折线的问题,它会缩放折线而不是正常渲染。

以下解释引自Brendan Clark - MSFT this thread

  

在WinRT中,每个形状的大小都受到运行应用程序的硬件的限制。最小公分母是2048 x 2048.这足够大,只要您将UI的每个组件保持在与典型屏幕大致相同的比例,一切都会看起来很清晰。一旦您尝试绘制比屏幕大得多的东西,形状将被钳制到硬件支持的最大尺寸,并将从该点放大到您请求的尺寸。由于形状被夹紧到比您要求的分辨率更低的分辨率,因此将其缩小会使其看起来模糊。

因此,如果您将StartPoint =“ - 10000,20”更改为StartPoint =“100,20”,您将看到它正常工作。

根据您的描述,我知道您不想更改路径数据,解决此问题的唯一方法是根据查看区域的大小手动剪切折线,有关详细信息,请检查{ {3}}