簡體   English   中英

C#WPF形狀旋轉鋸齒狀邊緣

[英]C# WPF shape rotation jagged edges

我正在使用WPF開發軟件,當我繪制一個簡單的形狀並將其旋轉大約45英尺時,會出現鋸齒狀的邊緣。 抗鋸齒不是解決方案,因為邊緣模糊,對角線根本無法按我的意願工作。 UseLayoutRounding和SnapsToDevicePixels沒有幫助,因為我認為它與線條繪制算法有關。 我在WinForms上嘗試了相同的方法,但得到了更好的結果,但是我想堅持使用WPF,因為我已經在使用它的某些功能。

代碼看起來像這樣:

  1. 創建一個形狀-> Shape = new Polygon();
  2. 將形狀添加到畫布-> DrawingLayer.Children.Add(Shape);
  3. 旋轉形狀-> RotateTransform rt = new RotateTransform(Angle,Centroid.X,Centroid.Y);
  4. 更新形狀-> Shape.RenderTransform = rt;

WPF輪播:
WPF旋轉

WinForms旋轉:
WinForms旋轉

使用抗鋸齒的WPF旋轉:
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>

結果對我來說看起來不錯

WPF RotationTransform將多邊形正方形旋轉45度

我注意到您說您正在旋轉“大約” 45度,並且再次看到任何代碼都不清楚(44.95度還是40度?)是什么意思,但是在這兩個角度都看起來不錯。 這是一個不太圓的41.3579度角:

WPF RotationTransform將多邊形正方形旋轉41.3579度

僅在90度±10的倍數上,我才開始看到明顯的階梯效應。 這是9度:

WPF RotationTransform將多邊形正方形旋轉5度

相關版本號:

  • 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM