Help us understand the problem. What is going on with this article?

WPF Imageコントロールの拡大・縮小アルゴリズム変更方法

More than 3 years have passed since last update.

WPFのImageコントロールを用いて画像を表示するアプリケーションを開発していたのですが、画像を拡大・縮小した際に、Frameworkのバージョンを3.5から4.0以降にあげたると画質が劣化するという問題が発生しました。

色々調べてみると、以下のことが分かりました。
1.拡大縮小のアルゴリズムはImageコントロールのVisualBitmapScalingModeプロパティで決定される
2.VisualBitmapScalingModeの値は、デフォルトでBitmapScalingMode列挙体のUnspecifiedが設定されている
3.BitmapScalingMode列挙体のUnspecifiedの値は.NET 3.5以前はFantと同等だが、4.0以降はLinear同等となる

以下はMSDNの関連情報です。
.NET Framework 3.5
https://msdn.microsoft.com/ja-jp/library/system.windows.media.bitmapscalingmode(v=vs.90).aspx
.NET Framework 4.0
https://msdn.microsoft.com/ja-jp/library/system.windows.media.bitmapscalingmode(v=vs.100).aspx

で、問題はVisualBitmapScalingModeプロパティのアクセシビリティがprotected internalな事です。
この為、普通に変更することができないため、以下のようにImageを継承したクラスを作成することで対応しました。

    public class FantScalingImage : System.Windows.Controls.Image
    {
        protected override void OnRender(System.Windows.Media.DrawingContext dc)
        {
            this.VisualBitmapScalingMode = System.Windows.Media.BitmapScalingMode.Fant;
            base.OnRender(dc);
        }
    }
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした