BitmapImage bi = new BitmapImage(new Uri(@"D:\DSC_0865.png"));
bi.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
img1.Source = bi;
上記のコードで、 を設定しようとすると、bi.CreateOptions
取得されません。なしと表示されています。解決策を提案してください。
BitmapImage bi = new BitmapImage(new Uri(@"D:\DSC_0865.png"));
bi.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
img1.Source = bi;
上記のコードで、 を設定しようとすると、bi.CreateOptions
取得されません。なしと表示されています。解決策を提案してください。
Begin/EndInitでBitmapImageを設定してみてください
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
bi.UriSource = new Uri(@"D:\DSC_0865.png")
bi.EndInit();
img1.Source = bi;
使用したBitmapImageコンストラクターのMSDNドキュメントには、 「このコンストラクターを使用して作成されたBitmapImageオブジェクトは自動的に初期化されます。初期化後、プロパティの変更は無視されます」 という短いコメントがあります。
したがって、コンストラクターを呼び出した後にCreateOptionsを設定しても、効果はありません。実際、BitmapImageはコンストラクターで作成されているので、それは理にかなっています。プロパティセッターはInvalidOperationExceptionをスローする必要があると主張することができます。
問題の解決策は、別のコンストラクターを使用することです。たとえば、CreateOptionsプロパティのMSDNドキュメントページの例に示されています。