VB2008 への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 ラキシス  ()
投稿日時
2008/9/22 12:10:00
>>16
Application.StartupPathと大体同じような動作だと思いますが、私がiniファイルを読んだりする時にはEnvironment.CurrentDirectoryを使ってます。
Application.StartupPathと大体同じような動作だと思いますが、私がiniファイルを読んだりする時にはEnvironment.CurrentDirectoryを使ってます。
投稿者 るきお  ()
投稿日時
2008/9/21 19:26:00
あと、ここまでのやりとりを通じていくつかできたことや解決したことがあったようですが、その際はその具体的な内容を書くようにお願いします。(たとえば、こうしたらできたというプログラムを載せる)
この掲示板も含めて多くの技術的掲示板は質問者のサポートを目的としているのではなく、情報共有を目的としています。
今回の例で言うとGさんと同じ悩みのある人がGoogle検索かなにかでこのやりとりを見つけたときに、悩みが解決できるような情報を提供すべきです。
Gさんは解決できたけど、同じ悩みを持った人がこのやりとりをみても解決できないとしたら情報交換の場としてはうまくありません。
この掲示板も含めて多くの技術的掲示板は質問者のサポートを目的としているのではなく、情報共有を目的としています。
今回の例で言うとGさんと同じ悩みのある人がGoogle検索かなにかでこのやりとりを見つけたときに、悩みが解決できるような情報を提供すべきです。
Gさんは解決できたけど、同じ悩みを持った人がこのやりとりをみても解決できないとしたら情報交換の場としてはうまくありません。
投稿者 るきお  ()
投稿日時
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"のように参照することが多いです。
この形式ですと絶対参照ということになりますね。
相対パスはカレントディレクトリを気にしないといけないのでつらくないですか?
投稿者 うたひこ  ()
投稿日時
2008/9/21 18:55:00
>>14
..\を知らないのですが、相対パスの指定方法ということでしょうか?
「どのパソコンでも画像を表示」
という目的の達成のためであるなら、リソースの埋め込みをオススメします。
プロジェクト内の「マイプロジェクト」を開き、「リソース」という項目に任意のファイルをドラッグドロップします。
この操作によって埋め込まれたファイルは、コード上で「マイ、リソーシズ、」と打ち込むことで取得できます。
..\を知らないのですが、相対パスの指定方法ということでしょうか?
「どのパソコンでも画像を表示」
という目的の達成のためであるなら、リソースの埋め込みをオススメします。
プロジェクト内の「マイプロジェクト」を開き、「リソース」という項目に任意のファイルをドラッグドロップします。
この操作によって埋め込まれたファイルは、コード上で「マイ、リソーシズ、」と打ち込むことで取得できます。
投稿者 G  ()
投稿日時
2008/9/21 15:08:00
>>13の補足
VB2008でのファイル構成が知りたいです。
調べてみましたらVB6.0とまったく別物で混乱してます。
VB2008でのファイル構成が知りたいです。
調べてみましたらVB6.0とまったく別物で混乱してます。
投稿者 G  ()
投稿日時
2008/9/21 14:01:00
>>2
画像はうまく表示できました。
が、ここで新たな問題が出てきました。
1で言ったとおり「..\」を使っての参照がまだ未解決でした。
パスを戻ってどのパソコンでも画像を表示できるようにしたいので画像参照のやり方を教えていただけませんでしょうか?
ちなみにVB6.0では出来てました。
画像はうまく表示できました。
が、ここで新たな問題が出てきました。
1で言ったとおり「..\」を使っての参照がまだ未解決でした。
パスを戻ってどのパソコンでも画像を表示できるようにしたいので画像参照のやり方を教えていただけませんでしょうか?
ちなみにVB6.0では出来てました。
投稿者 G  ()
投稿日時
2008/9/21 10:47:00
>>10.
すいません。
リフレッシュは自己解決しました。
協力してくださった皆様ありがとうございました。
すいません。
リフレッシュは自己解決しました。
協力してくださった皆様ありがとうございました。
投稿者 G  ()
投稿日時
2008/9/21 09:45:00
>>10
Public g As Graphics
g = PictureBox1.CreateGraphics
g.DrawString("こんにちわ", Font, Brushes.White, 10, 10)
がコードです。
この文字を消したいです。
Public g As Graphics
g = PictureBox1.CreateGraphics
g.DrawString("こんにちわ", Font, Brushes.White, 10, 10)
がコードです。
この文字を消したいです。
投稿者 うたひこ  ()
投稿日時
2008/9/21 09:35:00
>>9
流れがうまくつかめませんでしたが、おそらくは、フォームのリフレッシュを呼び出して、画面に描かれたものを消去し、その後、描きたいものだけを再度描画するということだと思います。
解釈が間違っていたら、できればコード掲載をお願いします。
流れがうまくつかめませんでしたが、おそらくは、フォームのリフレッシュを呼び出して、画面に描かれたものを消去し、その後、描きたいものだけを再度描画するということだと思います。
解釈が間違っていたら、できればコード掲載をお願いします。
投稿者 G  ()
投稿日時
2008/9/17 10:56:00
全て表示
どこのパソコンでも画像読み込みはようやくできました。ありがとうございます。
結果としましてはプロジェクトのプロパティ→コンパイル→出力ビルドのパスに..\FILE(好きなフォルダ名)と打ち込み→リソースに該当する画像ファイルを運び→vbのソースでPictureBox1.Image = My.Resources.haikei(該当する画像ファイル名)で保存し、exeで実行すればどこのPCでも画像が表示できました。ありがとうございました。