このGDIコードをWPFコードに変換するにはどうすればよいですか?最高の品質のWPFでビットマップをスケールダウン
Icon bigIcon32x32 = null;
bigIcon32x32 = Icon.ExtractAssociatedIcon("c:\\test.docx");
Bitmap bm = bigIcon32x32.ToBitmap();
Bitmap thumb16x16 = new Bitmap(16, 16);
Graphics graphics = Graphics.FromImage(thumb16x16);
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.DrawImage(bm, new Rectangle(0, 0, 16, 16), new Rectangle(0, 0, bm.Width, bm.Height), GraphicsUnit.Pixel);
graphics.Dispose();
bm.Dispose();
thumb16x16.Dispose();
私はToBitmap()メソッドを使用する必要があるようですが、その後はWPFのみを使用したいと考えています。
最後に、バインディングを使用してWPF DataGridの列に小さな16x16ピクセルのイメージを表示したいとします。
@ザンボニ@Zamboni私はコードをチェックする時間が少なくなっていますが、次の週末に試してみます。確かにその良いコードがあれば、それを解決策としてマークします;-) – msfanboy
@ Zamboniどこで辞書を作成して、どこにbitmapFrameをキャッシュしますか?私はMVVMを使用しています。 – msfanboy
コードの複数の部分でこれらのイメージを使用する必要がある場合は、辞書をよりグローバル/共有の場所に移動してアクセス可能にする必要があります。それ以外の場合は、BitmapFrameを使用するコードの近くにディクショナリを配置する必要があります。 ViewModelからイメージの表示を制御する場合は、この例のコードをViewModelにコピーし、_bitmapFrameをViewModelのImageSource型プロパティに割り当て、ビューからバインドします。 コンバータをイメージを使用する唯一の場所なら、私はおそらくそれをコンバーターに保持しています。 – Zamboni