天天看點

WPF圖檔放大後模糊的解決方法

原文: WPF圖檔放大後模糊的解決方法

WPF中顯示圖檔的方式很多,可以用Image控件來顯示圖像,或者直接設定一個控件的Background。圖檔的放大也很簡單,直接設定顯示圖檔的控件的Width和Height屬性就可以了。

最近一個需求是把一張圖檔放大十倍左右,我最開始是直接把Image控件的Width和Height乘以放大倍數。

比如這張3824*2494的圖檔

WPF圖檔放大後模糊的解決方法
當把圖檔放大到8倍左右時,效果是這樣的
WPF圖檔放大後模糊的解決方法

但是使用者對效果卻不滿意,他希望看到的是每個像素的樣子,因為他要用肉眼來分辨很多相似的圖檔,而這些圖檔的細微差別就在于這些像素點顔色有些不同。(就是一個類似找茬的小遊戲)。

在網上查了一些資料,發現需要設定Image的BitmapScalingMode和ClearTypeHint屬性。

xaml代碼如下

<Image  Name="Img" RenderOptions.BitmapScalingMode="NearestNeighbor" RenderOptions.ClearTypeHint="Enabled" ></Image>           

背景代碼為:

RenderOptions.SetBitmapScalingMode(Img,BitmapScalingMode.NearestNeighbor);
RenderOptions.SetClearTypeHint(Img,ClearTypeHint.Enabled);           

設定這兩個屬性後,顯示的圖檔如下

WPF圖檔放大後模糊的解決方法