投稿者 魔界の仮面弁士  () 投稿日時 2008/8/11 20:28:00


<1>の るきおさんのような構成になっている場合には、 
その画像のプロパティで、[出力ディレクトリにコピー]が 
どのように設定されているのかによって、 対応方法が異なります。 
 
 
============================================================ 
《出力ディレクトリにコピー:常にコピーする》 
《出力ディレクトリにコピー:新しい場合はコピーする》 
------------------------------------------------------------ 
上記いずれかが設定されている場合、EXE のあるディレクトリの下に、 
NewFolder1 フォルダが展開され、その下に image.jpg ファイルが配置されます。 
あとはこれを、るきおさんが書かれておられるように 
 Dim file As String = System.IO.Path.Combine( _  
  My.Application.Info.DirectoryPath, _  
  "NewFolder1\image.jpg")  
 PictureBox1.Image = Image.FromFile(file)  
といったコードで読み込むことができます。 
 
 
============================================================ 
《出力ディレクトリにコピー:コピーしない》 
------------------------------------------------------------ 
これが設定されているとimage.jpg はファイルとしては配置されないため、 
プログラムから利用するためには、もう一つのプロパティ 
《ビルドアクション:埋め込まれたりソース》 
を設定する必要があります。埋め込まれたリソースを読みこむには、 
 Dim file As System.IO.Stream 
 With System.Reflection.Assembly.GetExecutingAssembly 
  file = .GetManifestResourceStream("WindowsApplication1.image.jpg") 
 End With 
 PictureBox1.Image = Image.FromStream(file) 
というコードを書けば OK です。この方法の場合、指定するのが 
「NewFolder1\image.jpg」という文字列ではなく 
「WindowsApplication1.image.jpg」になる事に注意してください。 
 
 
============================================================ 
もうひとつの方法 
------------------------------------------------------------ 
[My Project]を開き、その中の「リソース」タブを設定するというのが 
一番簡単な方法です。以下のように、わずか一行のコードで利用できます。 
 'これだけで、画像クラス(System.Drawing.Bitmap)が得られる  
 PictureBox1.Image = My.Resources.image  
なお、この方法の場合、リソース名にピリオド(.)は使えません。