comboBoxのファイル取得とPictureBoxで画像表示

このQ&Aのポイント
  • ローカルの画像ファイルを取得し、ComboBoxに表示する方法と、選択された画像ファイルをPictureBoxに表示する方法について教えてください。
  • PictureBox内の画像を削除し、ComboBoxで選択された画像ファイルを読み込む方法について教えてください。
  • Form1で上記のソースコードを書く予定ですが、ComboBoxにどのように書けば良いのかわかりません。教えてください。
回答を見る
  • ベストアンサー

comboBoxのファイル取得とPictureBoxで画像表示

質問です。 ローカル(例:C:\Program Files\Test\1.jpg)等の中身(1.jpg)を、 取得してその取得した物をComboBoxの中で表示 そして表示されたComboBoxをクリックして取得した1.jpgを クリックするとPictureBoxに表示する。 "1.jpg","2.jpg","3.jpg"が複数有る場合は、 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button4.Click '上記でもいいが下記の方法が MSDN でも紹介されています。 '最初にイメージによって使用されているメモリを解放してから、グラフィックを消去します With PictureBox1 If Not (.Image Is Nothing) Then .Image.Dispose() .Image = Nothing End If End With End Sub と明記してPictureBoxの中身を消して ComboBoxで取得された2.jpgを読込む この様なソースコードを書きたいのですが、 ComboBoxにどの様に書けば良いのか困ってます。 どうか教えて下さい。 Form1で作る予定です。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

コンボボックスなら SelectIndexChangedイベントを使うといった具合になるでしょう コンボボックスをダブルクリックするなどして イベントハンドラを生成します dim ss as String = ComboBox1.Items(ComboBox1.SelectedIndex).ToString dim sPath as string = "ファイルのパス" & ss dim bmp as New Bitmap( sPath ); PictureBox1.Image = bmp といった具合でしょう

MEASPOP
質問者

お礼

補足の件で解決したけど、一部エラーになるのでここで書きます 補足の件はなんとか出来ました。 Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Dim ss As String = ComboBox1.Items(ComboBox1.SelectedIndex).ToString Dim sPath As String = "C:\Program Files\test" & ss Dim jpeg As New Bitmap(sPath) PictureBox1.Image = jpeg End Sub 出来ましたが、デバッグしてもコンボボックスをクリックして 空白のままでした。 なぜですか? イベントで"SelectIndexChangedが見つかりません"と怒られ、 上記にしても無理でした。VB2008だから・・でしょうか?

MEASPOP
質問者

補足

最後の dim bmp as New Bitmap( sPath ); PictureBox1.Image = bmp 2行ですが、デバッグすると怒られます。 ";"は、"文字が有効ではありません"と怒られ、 "bmp"では無く"jpg"にした結果、 "名前 'jpg' は宣言されていません。"と怒られます。 なぜでしょうか?

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

Dim sPath As String = "C:\Program Files\test" & ss は Dim sPath As String = "C:\Program Files\test\" & ss でしょうね コンボボックスへのデータの設定はプログラマーの責任です Form_Loadのイベントなどで Dim objDir as new IO.DirectoryInfo( "C:\Program Files\test") ComboBox1.Items.Clear() for each objFile as IO.FileInfo in objDir.GetFiles("*.jpg")   ComboBox1.Items.add( objFile.Name ) next などで設定が必要でしょう

MEASPOP
質問者

補足

ご指摘有り難うございます。 なるほど!ロードイベントですねぇ・・。 解決しました。 ありがとうございます。

関連するQ&A

  • 挿入されている画像をクリアする(VB.2003)

    VB.NET2003 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'ピクチャーボックス1~2のイメージをクリア For Each picBox As PictureBox In New PictureBox() {PictureBox1, PictureBox2} picBox.Image = Nothing Next 'ピクチャーボックス3~4にイメージを設定 PictureBox3.Image = Image.FromFile("C:\image03.jpg") PictureBox4.Image = Image.FromFile("C:\image04.jpg") End Sub Private Sub PictureBox3to4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click, PictureBox4.Click For Each picBox As PictureBox In New PictureBox() {PictureBox1, PictureBox2} If picBox.Image Is Nothing Then picBox.Image = sender.Image Exit Sub End If Next End Sub 上記は、ピクチャーボックス3~4のどれかが押されるとピクチャーボックス1に押された画像が挿入され、 次にピクチャーボックス3~4のどれかが押されると次はピクチャーボックス2に押された画像が挿入されるプログラムなのですが、 ボタン1を押すと、元に戻す「ピクチャーボックス1、2に挿入されている画像があればクリアする」プログラムを 作りたいのですが、サッパリ分かりません。 どなたかご教授願います┏○

  • ComboBoxについて

    ComboBoxのアイテムリストからアイテムを選んだら 選んだアイテムに対応した別の文字列 をComboboxに表示したいと思います。 動き的には Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load  ComboBox1.Text = ""  ComboBox1.Items.Add("000")  ComboBox1.Items.Add("001")  ComboBox2.Text = ""  ComboBox2.Items.Add("0個目")  ComboBox2.Items.Add("1個目")  ComboBox2.Visible = False End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged  Select Case ComboBox1.SelectedIndex   Case 0    ComboBox1.Visible = False    ComboBox2.Visible = True    ComboBox2.SelectedIndex = 0   Case 1    ComboBox1.Visible = False    ComboBox2.Visible = True    ComboBox2.SelectedIndex = 1  End Select End Sub Private Sub ComboBox2_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox2.GotFocus  ComboBox1.Visible = True  ComboBox1.DroppedDown = True  ComboBox2.Visible = False End Sub こんな感じで、ComboBoxを二つ使えば実現できるのですが一つだけでも実現できる方法が ありましたら、教えてくださいませ。

  • どこにどの画像が入ったか判定してくれるプログラム(VB.NET2003)

    VB.NET2003 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'ピクチャーボックス1~2のイメージをクリア For Each picBox As PictureBox In New PictureBox() {PictureBox1, PictureBox2} picBox.Image = Nothing Next 'ピクチャーボックス3~4にイメージを設定 PictureBox3.Image = Image.FromFile("C:\image03.jpg") PictureBox4.Image = Image.FromFile("C:\image04.jpg") End Sub Private Sub PictureBox3to4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click, PictureBox4.Click For Each picBox As PictureBox In New PictureBox() {PictureBox1, PictureBox2} If picBox.Image Is Nothing Then picBox.Image = sender.Image Exit Sub End If Next End Sub 上記は、ピクチャーボックス3~4のどれかが押されるとピクチャーボックス1に押された画像が挿入され、 次にピクチャーボックス3~4のどれかが押されると次はピクチャーボックス2に押された画像が挿入されるプログラムなのですが、 あるカードゲームの役判定をするため、どこにどの画像が挿入されたか判定するプログラムを作りたいのですが、 (例えば、ピクチャーボックス1にピクチャーボックス3の画像が挿入されているのなら「1-3」、4なら「1-4」です。と出力する) 難しすぎて全く分かりません・・・。  どなたかご教授願いします┏○

  • VB PictureBoxの描画範囲

    VisualStudio2010のVBにて、ピクチャーボックスの範囲をプログラム中で大きくして描画をさせたいのですが、ピクチャーボックスのサイズを大きくしても、大きくした範囲には描画がされません。 やり方は↓の方法です。 まず、formにボタンとピクチャーボックスを300×200で配置して、 http://homepage1.nifty.com/rucio/main/dotnet/Samples/dnSampleKeepImage.htm ↑のページで書かれてた方法でグラフィックを再描画させています。 Public Class Form1 Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim g As Graphics = AutoGraphics(PictureBox1) PictureBox1.Width = 400 g.FillRectangle(Brushes.Black, 100, 100, 10, 10) '1つ目の図形 g.FillRectangle(Brushes.Black, 350, 100, 10, 10) '2つ目の図形 g.Dispose() End Sub Public Function AutoGraphics(ByVal picSource As PictureBox) As Graphics If picSource.Image Is Nothing Then picSource.Image = New Bitmap(PictureBox1.Width, PictureBox1.Height) End If Return Graphics.FromImage(picSource.Image) End Function End Class これを実行すると、1つ目の図形は描画されていますが、拡大した範囲にある2つ目の図形は描画されていません。 ピクチャーボックスの範囲を大きくした所にも描画をさせたいと思っています。 よろしくお願いします。

  • vb2003.netでpicturebox に画像を表示させるにはどう

    vb2003.netでpicturebox に画像を表示させるにはどう vb2003.netでpicturebox に画像を表示させるにはどうするのですか。 picturebox に画像を表示させるにはどうするのですか。 momo1.jpgの画像を一度変数gaに記録してからpictureboxに表示させようとしました。 うまくいきません。どこが間違っているのでしょうか。pictureboxのプロパティーもいろいろ変更しましたが結局はだめでした。 Module Module1    Public ga As String End Module Public Class Form1 Inherits System.Windows.Forms.Form     ga = "momo1.jpg"     PictureBox1.Image = System.Drawing.Image.FromFile("c:\vbnet\cai\ga") End Sub End Class 投稿日時 - 2010-09-17 20:40:44

  • VB2008 comboboxの内容をSelectCaseで使いたい

    VB2008 comboboxの内容をSelectCaseで使いたい いつもお世話になってます。 初めてComboboxを使っています。 リストには 「メロンパン」 「コロッケパン」 「ハンバーガー」 と入っていて、 デバックしそれぞれを選択すれば、無事に指定欄に表示されるようにまではなりました。 ここでストップしてしまいまして、 Selectcase(今週習った)で、 case 1 (メロンパンは120円なので) en=個数x120 case 2 … というようにしたいのですが、 "Select Case ○○"の○○を何にすればいいのか分からないのと、 caseのあとの数字は(リストの上から)0,1,2というように聞いた気がしたのですがそれでよいのかどうか。 見ていただけないでしょうか。 未完成のぼろぼろですが、コードをおのせします。 Public Class Form1 Dim cm, a As String Dim kosu, en As Integer Private Sub ShapeComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ShapeComboBox.SelectedIndexChanged txtKaimono.Text = ShapeComboBox.Text End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click kosu = TextBox1.Text Select Case ShapeComboBox Case 0 en = kosu * 120 Case 1 en = kosu * 180 Case 2 End Select End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Application.Exit() End Sub End Class

  • Comboboxを連動するには?。

    はじめまして、どなたか教えてくれませんか。 Microsoft Visual Basic 2005を使ってCombobox1で選らんだ項目を WebBrowser1で表示させたい。 URLをCombobox1に表示させて表示はできますが項目を変えて表示するやり方がわかりまでいたのでおしえてくれませんか。 よろしくお願いします。 Combobox1で表示させたい項目 ヤフー グーグル goo Navigateで誘導したいURL http://www.yahoo.co.jp/ http://www.google.com/ http://www.goo.ne.jp/ Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged WebBrowser1.Navigate(ComboBox1.Text) End Sub

  • VB2005での画像処理

    各ピクセルの色情報を取得し,そのままコピーするプログラムです. 同じ大きさのPictureBox1とPictureBox2,それとButton1があります. エラーや警告は出ませんが,Button1をクリックしてもまったく動きません. 最終的にはPictureBox1を画像処理してPictureBox2に結果を表示させたいのですが,そのままコピーも出来ないため原因を探しています. A = picture1.GetPixel(i, j).ToArgb() picture2.SetPixel(i, j, color.FromArgb(A)) ではだめなのでしょうか.ご教授ください. -----以下プログラム------ Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer Dim j As Integer Dim A As Integer Dim picture1 As New Bitmap(PictureBox1.Image) Dim picture2 As New Bitmap(PictureBox2.Image) For j = 0 To PictureBox1.Width - 1 For i = 0 To PictureBox1.Height - 1 A = picture1.GetPixel(i, j).ToArgb() picture2.SetPixel(i, j, color.FromArgb(A)) Next Next End Sub

  • pictureboxに表示した画像のファイル名を取得したい。

    PictureBox1.image=image.fromfile("c:\a.jpg") のように画像を表示したピクチャーボックスの ファイル名c:\a.jpgを取得するには どのように書いたら良いでしょうか。 VB.NETでございます。m(__)m

  • VB2008でPictureBoxをキーボードを使って動かしたい

    VBを始めたばかりの初心者です。 VB2008を使ってPictureBoxに取り込んだイラストをキーボードを使って自由に動かしたいと思っています。 今作ったものの問題点 1.現状、全く同時に→と↑のキーを押せば右上に動きます。  また、→キーを押してイラストが右に動いているときに、↑キーを押すと上に動きます。  これを右上に動くようにする方法が知りたいのです。 2.キーを押し続けてイラストを動かし続けようとすると、一回動いて止まってから動き続けるという風になってしまいます。  これを止まらずに動くようにしたいのです。 ちなみにこれ↓が今のソースコードです。 Public Class Form1 Private Sub form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Up Then PictureBox1.Top = PictureBox1.Top - 10 End If End Sub Private Sub form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Down Then PictureBox1.Top = PictureBox1.Top + 10 End If End Sub Private Sub form1_KeyLeft(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Left Then PictureBox1.Left = PictureBox1.Left - 10 End If End Sub Private Sub form1_KeyRight(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Right Then PictureBox1.Left = PictureBox1.Left + 10 End If End Sub End Class これ↑を実行する場合は、デザインにPictureBoxを表示してください。PictureBoxに入れるイラストは適当なものを入れてください。 よろしくお願いします。