2010-05-26 48 views
4

有沒有辦法指定圖像在Image元素中的放大方式,LayoutTransform設置爲ScaleTransform,整數值爲ScaleXScaleY如何指定WPF圖像使用的圖像縮放算法?

我想顯示縮放圖像清晰(即使用'最近鄰居'縮放),沒有模糊。 (想象一下,如何讓位圖編輯程序在放大時運行)。

我注意到Image上的受保護屬性VisualBitmapScalingMode,因此創建了一個Image的子類,它將此屬性設置爲BitmapScalingMode.NearestNeighbor。但是,這沒有效果。

+0

我認爲你的子類不會改變ScaleTransform的工作方式。你有沒有嘗試手動設置圖像大小(寬度/高度),看看它是否脆? – Will 2010-05-26 12:59:17

+0

不幸的不是。如果我通過設置寬度和高度來擴展圖像,則獲得與應用ScaleTransform相同的結果。我認爲這是有道理的,無論哪種方式,它最終都是決定如何根據大小呈現自身的圖像,以及位圖。 – mackenir 2010-05-26 13:04:24

+0

你用TransformedBitmap獲得了更好的結果嗎? – Will 2010-05-26 13:14:51

回答

8

我解決了這個問題在我的圖片子類覆蓋的OnRender和繪製圖像之前設置VisualBitmapScalingMode:

class MyImage : System.Windows.Controls.Image 
    { 
    protected override void OnRender(DrawingContext dc) 
    { 
     this.VisualBitmapScalingMode = System.Windows.Media.BitmapScalingMode.NearestNeighbor; 
     base.OnRender(dc); 
    } 
    } 
+0

這很好用,我用它來獲得相反的效果(即Fant方法),但得到了我想要的 – Gleno 2012-09-22 20:50:35

7

可以爲Image控件設置RenderOptions.BitmapScalingMode屬性的XAML。沒有必要繼承Image類。

+0

我有一個縮放控件,可以改變孩子的變形,即使在NearestNeighbor模式下,孩子的圖像也是模糊的。OnRender解決方案(WPF 4.6.2) – Soonts 2017-09-27 20:03:38