最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決WPF繪制矢量圖形模糊的問題

 更新時間:2022年06月28日 09:54:13   作者:天方  
這篇文章介紹了WPF繪制矢量圖形模糊問題的解決方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

WPF默認提供了抗鋸齒功能,通過向外擴展的半透明邊緣來實現(xiàn)模糊化。由于WPF采用了設備無關單位,當設備DPI大于系統(tǒng)DPI時,可能會產(chǎn)生像素自動擴展問題,這就導致線條自動向外擴展一個像素,并且與邊緣相鄰的線條顏色變成了半透明,如下圖所示:

這種特性在繪制細線條的時候會導致一些我們所不期望的結(jié)果:顏色變淡,線條模糊,線條變粗。很多時候,我們是無法繪制一個像素的清晰的線條的。對于這個問題,WPF給我們提供了幾種解決方案:

1、設置像素對齊

對于系統(tǒng)內(nèi)置的一些控件,通過設置SnapsToDevicePixels為true,可以非常方便的實現(xiàn)像素對齊。

這個屬性是有繼承效果的,只要在父控件上設置了,其所有的子控件都是生效的。但它有時會出現(xiàn)改變窗口大小時線條消失的情況

2、設置對齊參考線

方法1只針對系統(tǒng)的內(nèi)置的一些控件有效,但對于使用DrawingVisual等方式自繪的圖形則沒有效果。此時可以通過設置參考線解決這一問題。

簡單的示例如下:

void render(DrawingContext dc)
{
    var pen = new Pen(Brushes.Black, 1);
    var d = pen.Thickness / 2;

    var guidelines = new GuidelineSet(new []wppm3vysvbp, new[]wppm3vysvbp);
    dc.PushGuidelineSet(guidelines);

    dc.DrawLine(pen, new Point(30, 10), new Point(30, 80));
    dc.DrawLine(pen, new Point(50, 20), new Point(50, 80));
}

具體代碼參見MSDN:Apply a GuidelineSet to a Drawing,也可以參看這篇文章WPF DrawingContext seems ignore SnapToDevicePixels

3、設置 RenderOptions.EdgeMode="Aliased"

前面的設置參考線方式效果較好,不過需要編寫較多的代碼,并且只能適用于水平或垂直的線條。很多時候,我使用的是設置 RenderOptions.EdgeMode="Aliased"(如果在代碼中則是使用this.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased)

4、設置UseLayoutRounding="True"

這個是在WPF4后增加的一個選項,用來控制布局舍入的,用來控制圖片模糊的效果非常好,用于控制控件的模糊效果也不錯的。不過也是對DrawingContext繪制的圖形沒有效果的。

小結(jié):WPF的抗鋸齒效果在給我們帶來的很好的視覺效果的同時,也給我們帶來的不少困擾,本文就總結(jié)了幾種常見的解決方案,希望能對大家的工作帶來一點幫助。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • c#實現(xiàn)flv解析詳解示例

    c#實現(xiàn)flv解析詳解示例

    本文提供的解析程序簡單的把FLV分解了出來,如果要做FLV的修改操作的話,可以給每個類加個toStream方法,再歷遍依次調(diào)用就可以寫回到文件里了
    2014-01-01
  • C#實現(xiàn)簡單屏幕監(jiān)控的方法

    C#實現(xiàn)簡單屏幕監(jiān)控的方法

    這篇文章主要介紹了C#實現(xiàn)簡單屏幕監(jiān)控的方法,涉及C#的圖標隱藏及屏幕截圖等技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • C# 創(chuàng)建控制臺應用程序

    C# 創(chuàng)建控制臺應用程序

    這篇文章主要介紹了C# 創(chuàng)建控制臺應用程序,在學習C#語言的時候,首先要學習控制臺的應用程序,這樣才能專注于語言的學習,減少學習的梯度,也有利于輸出自己需要輸出的內(nèi)容,一定要先使用控制臺的應用程序的方式,下面就和小編一起學習該內(nèi)容吧
    2021-10-10
  • C#中event內(nèi)存泄漏總結(jié)

    C#中event內(nèi)存泄漏總結(jié)

    本篇文章給大家分享了在C#中event內(nèi)存泄漏的相關知識點以及代碼分享,有興趣的朋友參考學習下。
    2018-03-03
  • C#中串口讀取問題及解決方案

    C#中串口讀取問題及解決方案

    在現(xiàn)代計算機系統(tǒng)中,串口通信仍然是許多設備和應用程序之間進行數(shù)據(jù)交換的重要方式,無論是在工業(yè)自動化、嵌入式系統(tǒng),還是在日常的硬件調(diào)試中,串口都扮演著不可或缺的角色,本文旨在深入探討C#中串口讀取問題的常見原因,并提供一系列有效的解決方案,需要的朋友可以參考下
    2024-12-12
  • C#從windows剪貼板獲取并顯示文本內(nèi)容的方法

    C#從windows剪貼板獲取并顯示文本內(nèi)容的方法

    這篇文章主要介紹了C#從windows剪貼板獲取并顯示文本內(nèi)容的方法,涉及C#操作剪貼板的相關技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • C#使用ML.Net完成人工智能預測

    C#使用ML.Net完成人工智能預測

    這篇文章主要介紹了C#使用ML.Net完成人工智能預測的詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 100行C#代碼實現(xiàn)經(jīng)典掃雷游戲

    100行C#代碼實現(xiàn)經(jīng)典掃雷游戲

    這篇文章主要為大家詳細介紹了如何用100行C#代碼實現(xiàn)經(jīng)典的掃雷游戲,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2023-02-02
  • C#中面向?qū)ο缶幊虣C制之多態(tài)學習筆記

    C#中面向?qū)ο缶幊虣C制之多態(tài)學習筆記

    這篇文章主要介紹了C#中面向?qū)ο缶幊虣C制之多態(tài)學習筆記,本文總結(jié)了個人對多態(tài)的理解以及接口多態(tài)、繼承多態(tài)等內(nèi)容,并給出了代碼示例,需要的朋友可以參考下
    2015-01-01
  • C#實現(xiàn)俄羅斯方塊基本功能

    C#實現(xiàn)俄羅斯方塊基本功能

    這篇文章主要為大家詳細介紹了C#實現(xiàn)俄羅斯方塊的基本功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論

奎屯市| 中阳县| 青田县| 黄山市| 清流县| 永昌县| 巴南区| 青冈县| 双牌县| 南宫市| 介休市| 龙南县| 遵义县| 闸北区| 含山县| 柳江县| 阳高县| 阜城县| 县级市| 清涧县| 明溪县| 平利县| 榆社县| 翁源县| 方正县| 方城县| 且末县| 宣汉县| 上杭县| 临海市| 泾川县| 石台县| 灵石县| 小金县| 中卫市| 安阳县| 合作市| 朝阳区| 梓潼县| 泗阳县| 内黄县|