vb2005環境で
複数のjpgファイルを(数は変動するとして)
表示させたいのですが
何か良い方法はありませんか?
jpgファイルを表示させる方法はわかるのでしょうか。
どのように表示させたいのでしょうか。
PictureBox に jpg ファイルを表示させるには、
こんな感じで出来ますから、
Me.PictureBox.Image = Image.FromFile("c:\temp\aaa.jpg")
あとは表示させたいように作れば宜しいかと思います。
> 何か良い方法はありませんか?
何が「良い方法」かはケースバイケースなので、自己判断して頂くとして、
手段のひとつとしては、PictureBox を必要な数だけ(動的に)作成して、
それぞれに対して
.LoadAsync(ファイル名)
のメソッドを呼び出すという方法があるかと思います。
画像1つの時(全画面に表示)… a
┏━━━━━━━━━┓
┃ ┃
┃ ┃
┃ ① ┃
┃ ┃
┃ ┃
┗━━━━━━━━━┛
画像2つの時(②の場所と③の場所に) … b
┏━━━━━━━━━┓
┃ ┃
┃ ② ┃
┃ ┃
┃ ┃
┃ ③ ┃
┗━━━━━━━━━┛
画像3つの時 … c
┏━━━━━━━━━┓
┃ ┃
┃ ① ┃
┃ ┃
┃ ┃
┃ ② ③ ┃
┗━━━━━━━━━┛
画像4つの時 … d
┏━━━━━━━━━┓
┃ ┃
┃ ① ② ┃
┃ ┃
┃ ┃
┃ ② ③ ┃
┗━━━━━━━━━┛
テキストファイルを読み込んで
その中に設定している画像(c:\test.jpgなど)を
表示するプログラムを作成しています。
a → b の順で表示させることはできるのですが
a → b → c にすると②/③の所で重なりが発生します。
素人なので、WEBでやり方を調べ
以下の方法でやってまして、
こちらのサイトへ戻ってみた状況です。
この方法で重なりを無くすことは出来るのでしょうか?
もっと良い方法はないでしょうか?
宜しくお願いします。
If Not (PictureBox1.Image Is Nothing) Then
PictureBox1.Image.Dispose()
PictureBox1.Image = Nothing
End If
If Not (PictureBox2.Image Is Nothing) Then
PictureBox2.Image.Dispose()
PictureBox2.Image = Nothing
End If
If Not (PictureBox3.Image Is Nothing) Then
PictureBox3.Image.Dispose()
PictureBox3.Image = Nothing
End If
<略>
PictureBox1.Refresh()
PictureBox2.Refresh()
PictureBox3.Refresh()
<略>
If record_count = 1 Then 'recore_countは表示画像数です。
PictureBox1.Image = Image.FromFile(jpeg_file1)
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
Me.PictureBox2.Parent = Me.PictureBox1
Me.PictureBox3.Parent = Me.PictureBox1
Me.PictureBox4.Parent = Me.PictureBox1
Me.PictureBox5.Parent = Me.PictureBox1
Me.PictureBox6.Parent = Me.PictureBox1
Me.PictureBox7.Parent = Me.PictureBox1
PictureBox2.BackColor = Color.Transparent
PictureBox3.BackColor = Color.Transparent
PictureBox4.BackColor = Color.Transparent
PictureBox5.BackColor = Color.Transparent
PictureBox6.BackColor = Color.Transparent
PictureBox7.BackColor = Color.Transparent
ElseIf record_count = 2 Then
PictureBox2.Image = Image.FromFile(jpeg_file1)
PictureBox2.SizeMode = PictureBoxSizeMode.StretchImage
PictureBox3.Image = Image.FromFile(jpeg_file2)
PictureBox3.SizeMode = PictureBoxSizeMode.StretchImage
Me.PictureBox1.Parent = Me.PictureBox2
Me.PictureBox4.Parent = Me.PictureBox3
Me.PictureBox5.Parent = Me.PictureBox3
Me.PictureBox6.Parent = Me.PictureBox2
Me.PictureBox7.Parent = Me.PictureBox2
PictureBox1.BackColor = Color.Transparent
PictureBox4.BackColor = Color.Transparent
PictureBox5.BackColor = Color.Transparent
PictureBox6.BackColor = Color.Transparent
PictureBox7.BackColor = Color.Transparent
ElseIf record_count = 3 Then
PictureBox2.Image = Image.FromFile(jpeg_file1)
PictureBox2.SizeMode = PictureBoxSizeMode.StretchImage
PictureBox4.Image = Image.FromFile(jpeg_file2)
PictureBox4.SizeMode = PictureBoxSizeMode.StretchImage
PictureBox5.Image = Image.FromFile(jpeg_file3)
PictureBox5.SizeMode = PictureBoxSizeMode.StretchImage
Me.PictureBox1.Parent = Me.PictureBox2
Me.PictureBox3.Parent = Me.PictureBox5
Me.PictureBox6.Parent = Me.PictureBox2
Me.PictureBox7.Parent = Me.PictureBox2
PictureBox1.BackColor = Color.Transparent
PictureBox3.BackColor = Color.Transparent
PictureBox6.BackColor = Color.Transparent
PictureBox7.BackColor = Color.Transparent
ElseIf record_count = 4 Then
PictureBox6.Image = Image.FromFile(jpeg_file1)
PictureBox6.SizeMode = PictureBoxSizeMode.StretchImage
PictureBox7.Image = Image.FromFile(jpeg_file2)
PictureBox7.SizeMode = PictureBoxSizeMode.StretchImage
PictureBox4.Image = Image.FromFile(jpeg_file3)
PictureBox4.SizeMode = PictureBoxSizeMode.StretchImage
PictureBox5.Image = Image.FromFile(jpeg_file4)
PictureBox5.SizeMode = PictureBoxSizeMode.StretchImage
PictureBox1.BackColor = Color.Transparent
PictureBox2.BackColor = Color.Transparent
PictureBox3.BackColor = Color.Transparent
''' PictureBox3.BackColor = Color.FromArgb(0)
Me.PictureBox1.Parent = Me.PictureBox6
Me.PictureBox2.Parent = Me.PictureBox6
Me.PictureBox3.Parent = Me.PictureBox4
End If
あのね、配列もイマダニできないのに、アレでしょ。
10年VBをやってるんでしたっけ?
入門本を詳しく読んで、がんばるしかありませんね。
ホントのことだぞ。
ま、カチンとくるかもしれんが。
じゃ〜な。
よくココはサーバーエラーがでるんね。
{このページのサーバーは存在しません}
ま、アレだがな。
その画像ファイルの内容がどういったものか分かりませんが、
c のパターンで重なってしまうというのであれば、
c のパターンで画像を3つ表示するという発想ではなく、
画像を3つ使ってうまい具合に重ならないようにして作った
新しい画像1つを表示するというようにしてみてはどうでしょう。
おそらくその位置に表示させる画像の種類は動的でしょうから
ムリでしょうけど・・。
もう少し具体的に画像ファイルの中身とか、そのプログラムは
どういうものに使うのかなどが知りたいです。
発想を変えて、画像をひとまとめにしてみた所
上手くいきました!
yanさん、アドバイス有り難うございます。
喉元通り過ぎた感が出たので
今日はあっさり引き上げることが出来ました。
れo先生
確かに、見栄えの悪い書き方で
自分ながら不服でした。
先に進む前に、克服してみますね!
有り難う御座います。
ツイート | ![]() |