Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
VB2008
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=2591#CommentId20232
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
るきお
 ()
投稿日時
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"のように参照することが多いです。
この形式ですと絶対参照ということになりますね。
相対パスはカレントディレクトリを気にしないといけないのでつらくないですか?