• ベストアンサー

PictureBoxの画像の表示方法を教えて VB.NET

VB.NET2003環境なのですが、 ピクチャーボックスに画像を表示したいのですが、 下記のようなことはできるでしょうか? ピクチャーボックスの大きさ640*240で固定 画像ファイル640*480 だった場合に、画像を縮小して、横長のピクチャーボックスの 中央に(左右に余白をつける)画像ファイルを表示したいです。 ピクチャーボックス自体の大きさを変える方法などは分かったのですが、 表示前にファイルの画像のサイズを小さくして、位置を指定して 表示する方法がわからないので、このようなことができましたら、 方法をご教示頂きたいです。 よろしくお願い致します。

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

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

ピクチャボックスのPaintイベントで DrawImageを使えば可能ですよ フォームクラスの変数に Dim Img as Image を追加します ファイル読み込みなどイベントで Img = Image.FromFile("ファイル名") PictureBox1.Refresh() を実行 ピクチャボックスのPaintイベントで if Img is nothing then   exit sub end if dim g as Graphics = e.Graphics dim nleft as integer = (PictureBox1.Size.Width - Img.Width)/2 dim nTop as integer = (PictureBox1.Size.Height - Img.Height)/2 g.DrawImage( Img, nLeft, nTop ) といった具合でしょう

popopompom
質問者

お礼

いつも完璧なご回答をありがとうございます。 すごく分かりやすくご説明をして頂き助かっております。 今回の件も思うとおりの動作ができました。 活用させて頂きます。 ありがとうございました。

関連するQ&A

  • ピクチャーボックスの大きさに合わせて画像を表示

    縦に長い画像をピクチャーボックスに表示したいのですが、 エクスプローラーの縮小表示と同じように 縦長の場合は左右に余白が出来て、画像の縦横比は 変更しないですべてを表示したいのですが、 どのようにしたら良いでしょうか。 PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage を使うと全部入るのですが、左右に余白がないように 引き伸ばしてしまうので、何の画像なのか分かりにくくなってしまいます。 よろしくおねがいします。m(__)m

  • VB.NETでPictureBoxを右クリックしてメニューを出したい

    こんばんは。 VB.NETなのですが、ピクチャーボックスに 画像を表示してそれを右クリックした時に プレビュー 編集 プログラムから開く など、エクスプローラー上のファイルのアイコンをクリックした時と同じような メニューが出るようにしたいのですが、 それはどのようにしたら良いでしょうか? 色々調べてみたのですが、見つからず、こちらで質問させて頂きました次第です。 ご教示頂けると助かります。

  • 画像の表示について

    1.imageボックスを用いた場合、pictureプロパティで画像を参照した後Stretch=Trueにするとそのimageの大きさに合わせて画像を縮小して表示してくれます。   pictureボックスのときはその大きさに合わせて画像を縮小して表示できません。AutoSize=tureにしても画像の大きさにpictureボックスが大きくなってしまうだけです。 pictureボックスにはそのような縮小機能はないのでしょうか? 指定する画像を縮小して保存し直すしかないのでしょうか? そうすると表示したい大きさに合わせるのが大変で・・・。 2.ひとつのフォーム上に与えられた変数によって 画像を表示したいと考えています。 私たちが習ったのは 1. まずpictureボックスを1つ用意する。 2. 表示したい枚数だけimageボックスを準備しその中に画像をpictureプロパティで指定する。(画像5枚につきimageボックス5つ) 3. textボックスに数字をいれcommandボタンをおす。 4. その値によって picture1.piture=image1.picture という具合で表示させる。 こうなると表示したい画像が10枚あればimageボックスが 10個必要になりますよね。 そうなるとフォーム上がごちゃごちゃなってしまいます。 そうしないように画像をアドレスを指定して直接いれることはできませんか? image1.picture="gazou1.bmp"(エラーでした・・・。)みたいな感じで・・・。 そうするとimageボックスを1つしか作らなくてよいのですっきりするのですが。 以上2つよろしくお願いします。

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

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

  • ピクチャーボックスの画像が欠けてしまいます。

    VB.NETとWinXPなのですが、 コマンドボタンを押して、ファイルダイアログボックスを開いて jpgファイルを指定するとピクチャーボックスにその 画像が表示されるようなものをつくっているのですが、 ピクチャーボックスの上に出るファイルダイアログボックスが重なっていた部分だけ画像が欠けてしまいます。 Picturebox1.Refresh()かなと思って試してみたのですが、今度は全部消えてしまいました。 良い方法があったら教えて頂きたいです。 よろしくお願いします。

  • VB4.0で画像のサムネイル方法

    VB4.0でデジタルカメラで撮った写真のサムネイルを作りたい。 例えば、800×600 100K の画像をwidth="80" height="60" の指定で縮小表示はされますが、 100k の画像を読込まなくては表示されません、 そこで 80×60 1k~2k くらいのサムネイルされた画像をVB4.0で作る方法をご存知の方、教えて下さい。

  • VB.NET2015でDDS画像を表示したい

    VB.NET2015において、フォーム上に貼り付けたPictureBoxにDDS画像ファイルを表示させたいです。 Picture1.ImageLocation = "D:\temp\018105.dds" のように書くだけでは、エラーにはならないもののPictureBoxの真ん中に「×」が表示されるだけです。 DDSファイル自体はビューアアプリで表示確認しているので問題はありません。 なにかVB.NETで使えるフリーのDLL、その書き方などをご教授ください。 よろしくお願いします。

  • 画像の縮小をすると粗くなってしまいます

    640×480pixelのピクチャボックスに ビットマップファイルを読み込み print メソッドで文字を出力してから 120×120pixelのピクチャボックスに StretchBlt を使用して縮小表示していますが、 画像が粗くなり文字が読み取れなくなって困っています。 すっきりきれいに縮小表示する方法があれば教えてください。 よろしくお願いします。

  • VBでボタンを押すと画像をランダム表示させる

    VisualBasic2005ExpressEditionで「ボタンを押すとピクチャーボックスに画像をランダムで表示」させたいんですが、どうやるかわかりません教えてください。何件か探しては見たんですが見つかりませんでした。もしかしてVBでは、そういったプログラムはできないんでしょうか?

  • VB6.0での画像縮小版表示

    VB6.0での画像縮小版表示 こんにちは エクスプローラでファイル一覧表示するとき画像ファイルの縮小版表示が出来ます。 これと同じようなことをVB6.0で行おうとしました。 例えばファイルが10個あったら10個並べて表示します。 Imageを使いサイズを調整して出来ました。 しかし、問題がありました。メモリーを大量に消費します。 このためメモリーの少ないPCだと極端に遅くなります。 エクスプローラで縮小版表示すると遅くないです。 ということは良い方法があるのではないか、自分のやり方が悪いのではないかと思います。 良い方法を教えていただけませんか。 今のやり方 MotoH = ImgSum(Cunt).Height MotoW = ImgSum(Cunt).Width ImgSum(Cunt).Picture = LoadPicture("Fileのフルパス名") Hsize = ImgSum(Cunt).Height Wsize = ImgSum(Cunt).Width SyukusyaH = MotoH / Hsize SyukusyaW = MotoW / Wsize If SyukusyaH < SyukusyaW Then Syukusya = SyukusyaH Else Syukusya = SyukusyaW End If ImgSum(Cunt).Height = Hsize * Syukusya mgSum(Cunt).Width = Wsize * Syukusya ImgSum(Cunt).Stretch = True 要は読み込んだ画像を用意したイメージのサイズに合わせて表示しています。 よろしくお願いいたします。

専門家に質問してみよう