web-dev-qa-db-ja.com

C#のリソースから画像を動的に追加およびロードする

ソリューションにいくつかの画像を追加しました。現在、ソリューションエクスプローラー内のimages\flowers\rose.pngフォルダーの下にあります。この画像を画像コントロールに動的にロードする方法が必要です。

私の現在のアプローチは、タイプ「content」を作成し、「copyalways」プロパティを使用することです。次に、以下のように画像への相対パスを指定します。

Image2.Source = new BitmapImage(new Uri("/images/flowers/Customswipe_b.png", UriKind.Relative));

ターゲットシステムにコピーせずにリソースからロードする方法はありますか?.

9
logeeks

以下は私にとっては問題なく動作します:

image.Source = new BitmapImage(new Uri("pack://application:,,,/YourAssemblyName;component/Resources/someimage.png", UriKind.Absolute));

また、画像のBuild ActionNoneからResourceに変更する必要があります。

15
Eric

リソースエディター(ソリューションエクスプローラー、Resources.resxをクリック)を開き、そこに画像を追加できます。次に、Properties.Resources.ImageIdを使用してBitmapとして簡単にアクセスできます。

http://msdn.Microsoft.com/en-us/library/3bka19x4(v = vs.100).aspx

6
MrDosu

URIの正確な構文を見つけるのにいくつか問題があったので、以下で詳細を参照してください。

画像(_myImage.png_)が(ルートディレクトリからの)サブフォルダ "images"にある場合、正確な構文は次のとおりです。

_image.Source = new BitmapImage(new Uri(@"pack://application:,,,/images/myImage.png", UriKind.Absolute));
_

画像がサブフォルダ_images/icon/_(ルートディレクトリから)にある場合、構文は次のとおりです。

_image.Source = new BitmapImage(new Uri(@"pack://application:,,,/images/icon/myImage.png", UriKind.Absolute));
_
  • パーツ_"pack://application:,,,_は変更されないことに注意してください。
  • 必ず「ビルドアクション」を「リソース」に設定してください

詳細については: ここを参照

2
Malick

イメージを追加してからその「ビルドアクション」を「リソース」に変更する方法も機能しますが、リソースからの追加とロードを要求したので、同じタスクを実行するための別のアプローチになります。特定のmsdn記事を読むためのリンクを提供したいと思います。

リソースの追加と編集(ビジュアルC#)

0
DeshDeep Singh

あなたはこれを使用します:

 Image2.Source = new Bitmap(
      System.Reflection.Assembly.GetEntryAssembly().
        GetManifestResourceStream("MyProject.Resources.myimage.png"));

または

Image2.Source = new Bitmap(WindowsFormsApplication1.Properties.Resources.myimage);

私は2番目のものをお勧めします。

0
HichemSeeSharp