複数のキャンバスと多くのボタンを持つ WPF アプリケーションで作業しています。ユーザーは画像を読み込んでボタンの背景を変更できます。
これは、BitmapImage オブジェクトに画像をロードするコードです。
bmp = new BitmapImage();
bmp.BeginInit();
bmp.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.UriSource = new Uri(relativeUri, UriKind.Relative);
bmp.EndInit();
EndInit() では、アプリケーションのメモリが非常に大きくなります。
思考を改善する (ただし、問題を実際に解決するわけではありません) ことの 1 つは、追加することです。
bmp.DecodePixelWidth = 1024;
1024 - 私の最大キャンバスサイズ。しかし、幅が 1024 より大きい画像に対してのみこれを行う必要があります。