例外の解決方法 GDI+でジェネリックエラーが発生しました。
2022-01-23 02:48:12
WPFの開発において、画像を操作する際に、この例外 "A generic error occurred in GDI+" に遭遇することがあり、遭遇した状況と合わせて考えると、根本的な原因は、例えば、あるオブジェクトが画像ファイルに対して操作を行い、画像ファイルを読み込んで表示するだけで、別のオブジェクト ファイルパスに書き込む際に例外が生じていることが考えられます。
解決策としては、UIに画像を表示する際に、ファイルとして読み込む場合はデータフローローディングを使用することで、上記の問題を回避することができます。
例えば、次のような小さな関数で画像を置き換えることができます。このプログラムでは、まずデフォルトの画像を表示し、その画像をクリックすると画像の置き換え操作が実行されます。しかし、右の画像をクリックすると置換される仕組みになっている。
コアとなるコードは以下の通りです。
(1) ファイルをコンバータのソースとして使用する場合、例外が発生する。
public class PathToImageConverterLeft : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.)
CultureInfo culture) {
string imagePath = (string)value;
if (string.IsNullOrEmpty(imagePath))
{
return null;
}
else
{
return new BitmapImage(new Uri(imagePath, UriKind.RelativeOrAbsolute));
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
CultureInfo culture) {
return null;
}
}
(2) データストリームをコンバータのソースとして使用する場合は問題ない。
public class PathToImageConverterRight : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.)
CultureInfo culture) {
string imagePath = (string)value;
if (string.IsNullOrEmpty(imagePath))
{
return null;
}
else
{
ReadAllBytes(imagePath);
MemoryStream ms = new System;
return BitmapFrame.Create(ms, BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
CultureInfo) {
return null;
}
}
サンプルコードはこちらにアップロードしています。 http://download.csdn.net/detail/u013376417/8390975
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例