より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

WPFのImageコントロールに画像の一部切り取って表示させるにはCroppedImage

pngファイルの一部をImageコントロールに表示したい場合は、CroppedImageを使います。

しかし、MSDNの記事を鵜呑みにしていたのですが、ファイルがロックされてしまうことに気づきました。

以下のようにする必要がありそうです。


    public static class BitmapHelper
    {
        public static BitmapImage CreateBitmapImage(string filePath)
        {
            var bitmap = new BitmapImage();
            var stream = File.OpenRead(filePath);

            bitmap.BeginInit();
            bitmap.CacheOption = BitmapCacheOption.OnLoad;
            bitmap.StreamSource = stream;
            bitmap.EndInit();
            stream.Close();
            stream.Dispose();
            return bitmap;
        }

        public static CroppedBitmap CreateCroppedBitmap(string filePath, Int32Rect rectangle)
        {
            var bitmap = CreateBitmapImage(filePath);
            var croppedBitmap = new CroppedBitmap(bitmap, rectangle);
            return croppedBitmap;
        }
    }

参考記事

qiita.com

stackoverflow.com