WPF Image控制項鋸齒問題

2021-09-28 00:26:55 字數 1678 閱讀 9731

1 現象:

使用image控制項顯示,對於灰度的乙個,發現出現了鋸齒,在灰度逐漸減淡的地帶,出現了類似於馬賽克的鋸齒過度。

2 解決方法

在網上找了下原因,最終發現是乙個屬性設定的問題:

renderoptions.bitmapscalingmode=

"nearestneighbor"

將這個屬性預設不做設定就能解決,或者改為以下設定也可以解決。

reneroptions.bitmapscalingmode=

"highquality"

關於該屬性的幾個值與物理意義:摘自參考檔案(2).

unspecified使用預設位圖縮放模式,即 linear。

lowquality使用雙線性位圖縮放,雖然速度比 highquality 快,但輸出質量較低。 lowquality 模式與 linear 模式相同。

highquality使用高質量位圖縮放,雖然速度比 lowquality 模式慢,但輸出質量更高。 highquality 模式與 fant 模式相同。

linear使用線性位圖縮放,雖然速度比 highquality 模式快,但輸出質量較低。

fant使用超高質量 fant 位圖縮放,雖然速度比所有其他位圖縮放模式都慢,但輸出質量更高。

nearestneighbor使用最近鄰域位圖縮放,當使用軟體光柵器時,該縮放提供優於 lowquality 模式的效能。 該模式常用於放大位圖。

3 鋸齒模糊等顯示問題的其他解決方案

在查的過程中,也找了一些關於模糊、鋸齒的設定的東西。當然也有人說不管用的,當然,另幾個對我這個不適用。

列舉以下:

1.設定 snaptodevicepixels=「true」

之前利用解決過有的顯示器上會出現一條線。

2.設定 reneroptions.bitmapscalingmode=「highquality」

3.設定 userlayoutrounding=「true」

網上說有人能解決,但是我設定了上邊的nearestneighbor以後沒用。其他人可以試試。

當然,還有人說這個wpf的缺陷,建議用其他方式實現顯示。具體可參考:

(1)wpf中image控制項影象模糊的解決方案

介紹了多種情況。

(2)wpf模糊的解決之路

wpf提供了多種處理放大的顯示問題。

因為放大後,有許多新的畫素點在原來中沒有值,這就需要新插值進去,這就涉及到如何插值的問題。這裡有多種插值的演算法。可以看這個地方了解這些原理:

這裡的最近鄰域法就是咱們這裡的renderoptions.bitmapscalingmode=「nearestneighbor」

他的特點:

(1)簡單,運算起來快;

(2)放大後中的畫素值都是之前中有的。保留了最原汁原味的東西。

因為第2個原因,所以在編輯中,一般都選用這個,例如畫圖、ps工具等。

而這個方法的缺點也正是其會因為過渡突然,造成鋸齒、馬賽克的情況,放大後,看的不連續、不美觀。所以,使用別的方法,改進這種情況,就是一般的高質量的插值方法,按照一定的演算法算出乙個中間值來填充,所以連續、美觀。但因為插值演算法複雜,所以也比較耗資源、耗時,實時處理時可能會有卡頓等情況。

但是新的值是原來中沒有的!

WPF Image控制項

1.只是顯示 string path 相對路徑 path 絕對路徑 bitmapimage image new bitmapimage new uri path,urikind.absolute img.source image 2.在另一段 中,要刪除這個 就需要先把轉換成檔案流,在當前讀取流完時...

WPF Image控制項的繫結

原文 wpf image控制項的繫結 在我們平時的開發中會經常用到image控制項,通過設定image控制項的source屬性,我們可以載入,設定image的source屬性時可以使用相對路徑也可以使用絕對路徑,一般情況下建議使用絕對路徑,類似於下面的形式source demo component ...

WPF Image控制項 Source繫結路徑方法

最近在做wpf專案時,要通過image 來新增顯示,使用其imagesource屬性來設定image的路徑進行繫結。最初用的絕對路徑進行繫結,沒有什麼問題,只要將所在的絕對路勁複製貼上就好了。但是,當整個專案的路徑發生了變化 將放在專案工程目錄內的 時,就有問題了,需要手動更改絕對路徑。後面將其改為...