Home > C# > 目的別資料 > 地域設定

Image ControlにResx画像リソースを割り当てる

WPFのための地域設定の手引き Localization Guidance for WPF

原文

WPF Localization Guidance 「Rick StrahlとMichele Leroux Bustamante(2009年6月)」の和訳です。
地域設定の実装の参考にしてください。

関連ファイル

Image ControlにResx画像リソースを割り当てる
Assigning a Resx Image Resource to an Image Control

あなたが、アプリケーションのフォルダに格納されている、ゆるい、あるいは、コンパイルされたXAMLリソースよりもむしろ、Resxリソースに画像を保存する場合、 画像の読み込みに関係する、わずかな余分の努力があります。そして、それを読んで、明示的に画像コントロールに入れます。 なぜ、あなたが、埋め込まれたファイル・リソースとして、実際に、XAMLリソースを格納することができるとき、 あなたは、Resx ResourceSetの内側に、画像を格納することを望むのでしょうか?WPFのファイル・リソースは、 実際に、標準ファイル・リソースに似ています。どんな他のプロジェクトでも、地域設定可能ではありません。リソース・ストリームとして、 それらは埋め込まれていますが、それらに関連した、地域設定情報がありません。 あなたが、たとえば、フラグのような画像を地域設定する必要がある場合、 あなたは、更に、Resx ResourceSetに基づく画像リソースを使用する必要があります。

残念ながら、WPFは、Bitmap画像で直接動作することを好みません。そして、代わりに、画像ソースに画像の変換を必要とします。 WPFは、URIから、あるいは、ストリームからいくつかの操作で、画像リソースを読み込むことを好みます。 それは、それをする必要があるものより、さらに複雑な普通のBitmapを読み込む処理をします。例えば、 あなたが、LocalizationInfoRes.CountryFlagにリソースに格納される厳格に型指定されたBitmap持っている場合、 ここに、あなたが、Image.Sourceプロパティに、このビットマップを読み込む方法があります。:


if (this.IsInitialized) 
{ 
  MemoryStream ms = new MemoryStream();
  LocalizationInfoRes.CountryFlag.Save(ms, ImageFormat.Jpeg); 
  ms.Position = 0; 
  this.imgFlag.BeginInit(); 
  this.imgFlag.Source = BitmapFrame.Create(ms); 
  this.imgFlag.EndInit(); 
  ms.Close(); 
}
			

このコードが、メイン・ドキュメントが初期化されたあとにのみ、実行されることに注意します。 このような原因で、画像は、読み込まれず、警告なしで処理に失敗します。 Bitmapインスタンスを読み込むためのコツは、BitmapFrameクラスを使用することです。 それは、ストリームから画像を読むことを可能にします。 例は、Bitmapを使用して、MemoryStreamに書き込みむことを示します。 そして、その次に、BitmapFrame.Create()へ入力されるように、そのストリームを指定します。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」