Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#WPF形状旋转锯齿边_C#_Wpf_Rotation_Blurry - Fatal编程技术网

C#WPF形状旋转锯齿边

C#WPF形状旋转锯齿边,c#,wpf,rotation,blurry,C#,Wpf,Rotation,Blurry,我正在使用WPF开发一个软件,当我画一个简单的形状并旋转大约45'时,我会得到锯齿状的边缘。抗锯齿不是一个解决方案,因为我得到模糊的边,在对角线上,它根本不能像我想要的那样工作。UseLayoutRounding和SnapsToDevicePixels没有帮助,因为我认为,它与线条绘制算法有关。我用WinForms尝试了同样的方法,得到了更好的结果,但我想坚持使用WPF,因为我已经在使用它的一些特性 代码如下所示: 创建形状->形状=新多边形() 将形状添加到画布->DrawingLayer.C

我正在使用WPF开发一个软件,当我画一个简单的形状并旋转大约45'时,我会得到锯齿状的边缘。抗锯齿不是一个解决方案,因为我得到模糊的边,在对角线上,它根本不能像我想要的那样工作。UseLayoutRounding和SnapsToDevicePixels没有帮助,因为我认为,它与线条绘制算法有关。我用WinForms尝试了同样的方法,得到了更好的结果,但我想坚持使用WPF,因为我已经在使用它的一些特性

代码如下所示:

  • 创建形状->形状=新多边形()
  • 将形状添加到画布->DrawingLayer.Children.Add(形状)
  • 旋转形状->旋转变换rt=新旋转变换(角度、质心.X、质心.Y)
  • 更新形状->形状.RenderTransform=rt WPF轮换:

    WinForms旋转:

    带抗锯齿的WPF旋转:

    很难在没有看到实际代码/标记的情况下进行评论,但是使用此标记

    <Window x:Class="StackOverflow.Question54926730"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="StackOverflow 54926730" SizeToContent="WidthAndHeight">
        <Canvas Height="400" Width="400">
            <Polygon Canvas.Left="100" Canvas.Top="100" Stroke="Black" StrokeThickness="1">
                <Polygon.Points>
                    <Point X="0"   Y="0" />
                    <Point X="200" Y="0" />
                    <Point X="200" Y="200" />
                    <Point X="0"   Y="200" />
                </Polygon.Points>
                <Polygon.RenderTransform>
                    <RotateTransform Angle="45" CenterX="100" CenterY="100" />
                </Polygon.RenderTransform>
            </Polygon>
        </Canvas>
    </Window>
    
    
    
    …结果对我来说很好

    我注意到你说你是“绕”45度旋转的,同样,没有看到任何代码,不清楚这是什么意思(44.95度?40度?),但在这两个角度,结果看起来都不错。这是41.3579度的非圆角度:

    只有在90度±10度的倍数下,我才开始看到明显的楼梯效果。这里是9度:

    相关版本号:

    • 64位Windows 10 Pro 1809 v17763.437
    • Visual Studio社区2019 v16.0.1
    • .NET Framework v4.7.2
    • PresentationCore.dll
      v4.7.3362.0
    • PresentationFramework.dll
      v4.7.3362.0

      • 如果不看到您的实际代码/标记,很难进行评论,但是有了这个标记

        <Window x:Class="StackOverflow.Question54926730"
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                Title="StackOverflow 54926730" SizeToContent="WidthAndHeight">
            <Canvas Height="400" Width="400">
                <Polygon Canvas.Left="100" Canvas.Top="100" Stroke="Black" StrokeThickness="1">
                    <Polygon.Points>
                        <Point X="0"   Y="0" />
                        <Point X="200" Y="0" />
                        <Point X="200" Y="200" />
                        <Point X="0"   Y="200" />
                    </Polygon.Points>
                    <Polygon.RenderTransform>
                        <RotateTransform Angle="45" CenterX="100" CenterY="100" />
                    </Polygon.RenderTransform>
                </Polygon>
            </Canvas>
        </Window>
        
        
        
        …结果对我来说很好

        我注意到你说你是“绕”45度旋转的,同样,没有看到任何代码,不清楚这是什么意思(44.95度?40度?),但在这两个角度,结果看起来都不错。这是41.3579度的非圆角度:

        只有在90度±10度的倍数下,我才开始看到明显的楼梯效果。这里是9度:

        相关版本号:

        • 64位Windows 10 Pro 1809 v17763.437
        • Visual Studio社区2019 v16.0.1
        • .NET Framework v4.7.2
        • PresentationCore.dll
          v4.7.3362.0
        • PresentationFramework.dll
          v4.7.3362.0

        您是如何绘制此形状的?它是一个矩形还是一条路径还是什么?它是一个多边形。请为您的问题添加足够的标记,以便有人可以剪切和粘贴以复制您的问题。你越容易让人们帮助你,你就越有可能得到一个好的答案。只是增加了一些简单的步骤。你可以用简单的矩形或直线来测试,我得到了同样的效果。你是怎么画这个形状的?它是一个矩形还是一条路径还是什么?它是一个多边形。请为您的问题添加足够的标记,以便有人可以剪切和粘贴以复制您的问题。你越容易让人们帮助你,你就越有可能得到一个好的答案。只是增加了一些简单的步骤。你可以用简单的矩形或直线来测试它,我得到了相同的效果。当抗锯齿打开时,我得到了相同的结果。看起来它和GDI+和WinForms有关,WPF只是不同而已。当反走样打开时,我得到了相同的结果。看起来它与GDI+和WinForms有关,WPF只是不同而已。