複数のjpgファイルを表示する

解決


ほほ  2010-04-10 04:15:24  No: 146809

vb2005環境で
複数のjpgファイルを(数は変動するとして)
表示させたいのですが
何か良い方法はありませんか?


yan  2010-04-14 00:59:30  No: 146810

jpgファイルを表示させる方法はわかるのでしょうか。
どのように表示させたいのでしょうか。

PictureBox に jpg ファイルを表示させるには、
こんな感じで出来ますから、

Me.PictureBox.Image = Image.FromFile("c:\temp\aaa.jpg")

あとは表示させたいように作れば宜しいかと思います。


魔界の仮面弁士  2010-04-14 02:33:12  No: 146811

> 何か良い方法はありませんか?
何が「良い方法」かはケースバイケースなので、自己判断して頂くとして、
手段のひとつとしては、PictureBox を必要な数だけ(動的に)作成して、
それぞれに対して
  .LoadAsync(ファイル名)
のメソッドを呼び出すという方法があるかと思います。


ほほ  2010-04-14 04:39:25  No: 146812

画像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


れo先生  2010-04-14 04:46:50  No: 146813

あのね、配列もイマダニできないのに、アレでしょ。
10年VBをやってるんでしたっけ?
入門本を詳しく読んで、がんばるしかありませんね。

ホントのことだぞ。
ま、カチンとくるかもしれんが。

じゃ〜な。


れお  2010-04-14 04:58:55  No: 146814

よくココはサーバーエラーがでるんね。

{このページのサーバーは存在しません}

ま、アレだがな。


yan  2010-04-14 18:15:53  No: 146815

その画像ファイルの内容がどういったものか分かりませんが、
c のパターンで重なってしまうというのであれば、
c のパターンで画像を3つ表示するという発想ではなく、
画像を3つ使ってうまい具合に重ならないようにして作った
新しい画像1つを表示するというようにしてみてはどうでしょう。

おそらくその位置に表示させる画像の種類は動的でしょうから
ムリでしょうけど・・。

もう少し具体的に画像ファイルの中身とか、そのプログラムは
どういうものに使うのかなどが知りたいです。


ほほ  2010-04-15 09:33:09  No: 146816

発想を変えて、画像をひとまとめにしてみた所
上手くいきました!

yanさん、アドバイス有り難うございます。
喉元通り過ぎた感が出たので
今日はあっさり引き上げることが出来ました。

れo先生
確かに、見栄えの悪い書き方で
自分ながら不服でした。
先に進む前に、克服してみますね!
有り難う御座います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加