投稿者 るきお  () 投稿日時 2008/9/21 19:22:00


>1で言ったとおり「..\」を使っての参照がまだ未解決でした。  
>パスを戻ってどのパソコンでも画像を表示できるようにしたいので 
>画像参照のやり方を教えていただけませんでしょうか?  
やってみましたが、VB2008でも普通にできましたよ。 
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint 
 
    Dim fileName = "..\Test.bmp" 
    e.Graphics.DrawImage(Image.FromFile(fileName), 10, 10) 
 
End Sub 
 
このときのファイルの配置は画像の通りです。 
 
開発環境ではexeはbin\debugフォルダに配置されるのでここがカレントディレクトリになります。なので、この例のように"..\Test.bmp"としていするとbinフォルダにあるTest.bmpを指します。 
 
なお、この例は相対パスの使用例としては良いのですが、画像の表示例としては毎回New Bitmapとしてしまう点で効率的ではありません。(Form_Loadなど)必要となったタイミングで1回だけNewして、Paintイベントでは描画するだけにしたほうがパフォーマンスに優れています。 
 
「どのパソコンでも画像を表示できるようにしたい」というのはよくわかります。 
相対パスはその解決方法の1つではありますが、うたひこさんのおっしゃるような「リソース」を使ったやり方の方が推奨されています。 
 
ただし、私はexeの下の階層にimageフォルダを配置して、Application.StartupPath & "\image\test.bmp"のように参照することが多いです。 
この形式ですと絶対参照ということになりますね。 
 
相対パスはカレントディレクトリを気にしないといけないのでつらくないですか?