• 締切済み

画像表示

PictureBoxで画像を表示します。 オブジェクトのサイズより画像の方が大きい場合に、画像をオブジェクト内で動かして表示するにはどうしたらいいでしょうか?

noname#39145
noname#39145

みんなの回答

  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.2

確かにVBの環境が分からなければ答えようのない問題ですが・・・ 画像の変移を表示するには水平と垂直のスクロールバーを配置して PictureBoxとの三位一体で表現いたします。 PictureBoxに入り切らない部分がスクロールバーの変移量です。 画像の大きさをwid,hgtとおけば  水平方向 wid-pic.scalewidth  垂直方向 hgt-pic.scaleheight これを水平及び垂直スクロールバーのMAXにセットします。 スクロールバーを動かしたときにchangeイベントが発生します。 ここで画像が動く処理を記述します。 変移量はValueで返ってくるので、これを元に画像を動かします。 画像の方は一部を切り出す必要があるので 非表示のPictureBoxを用意しそちらに読み込ませます。 裏方のPictureBoxを用意すれば柔軟性が高くなります。 裏方のPictureBoxはAutoRedraw、AutoSizeともにTrueにします。 あとはPaintPictureで次のようにします。 Pic.PaintPicture,PicHidden,0,0,,,H.value,V.Value,,,vbSRCCopy 初回のコードは非常にややこしいのですが、 一度書いてしまえば応用が幾らでも利きますから頑張りましょう。

noname#39145
質問者

お礼

ごめんなさい。 色々と情報が足りなかったみたいですね。 スクロールバーを使用するのではなく、スロットのリールのようなものを表現したかったのです。 自分でなんとか解決しました。 お手数おかけしました。

回答No.1

VB環境がわからないのですが、VisualBasic.NETでしょうか? Panelコントロールを置き、その中にPictureBoxを置いて、 PanelコントロールのAutoScrollプロパティをtrueにすることで 大きな画像が入ってもスクロールできる方法があります。 参照: http://dobon.net/vb/dotnet/graphics/scrollimage.html

noname#39145
質問者

補足

ごめんなさい。 VB6.0です。

関連するQ&A

  • 画像表示についてです

    picturebox1とpicturebox2を使ってbmpとjpgの画像を表示させています。 そこで、画像にも色々サイズがあるのですがpictureboxのwidthのサイズに合わせて画像の縮小拡大したいのですがどうやっていいのかわかりません。 教えてくださいお願いしますm(__)m ちなみにHeightはスクロールバーを使ってます。 Widthはスクロールバーを使わないプログラムです。

  • C# Picturebox 縮小・拡大時の表示方法

    下記のようなコードで、画像の拡大・縮小を行っています。 ただ画像の縮小時、PictureBox内の余分な部分について、(1)縮小前の 画像が残像のように表示されています。 また通常、画像の拡大・縮小前の画像では画像サイズがPictureBoxよりも大きいサイズの 場合、スクロールバーを表示するようにしています。 (2)でも、画像拡大時、スクロールバーが出るには出ているのですが、画像全てを 確認できません。 (1)、(2)の問題について、解決方法をご存知の方、お願いです、、、教えてください。。。 かなり、困ってます。。。。 Bitmap img = new Bitmap(pictureBox1.Image.Tag.ToString()); //PictureBox1のGraphicsオブジェクトの作成 Graphics g = pictureBox1.CreateGraphics(); //拡大・もしくは縮小 RectangleF rect = new RectangleF(0, 0, zoom * img.Width, zoom * img.Height); g.DrawImage(img, rect); //BitmapとGraphicsオブジェクトを破棄 img.Dispose(); g.Dispose();

  • PictureBoxの件で教えて頂きたいです VB.NET

    PictureBox1に画像を表示してあり、 その画像の一部分を四角形で指定して、 PictureBox2に表示するのですが、 例えばPictureBox1から切り取った画像が100*100の サイズだった場合に、PictureBox2に表示する際に PictureBox2のサイズを200*200などと 元の100*100より大きく設定して、 PictureBoxSizeMode.StretchImageを実行して、 画像を200*200で表示して、 それをそのサイズで保存したいのですが、 保存された画像をみると100*100になってしまっています。 表示されているサイズ(この場合200*200)で保存したいのですが、 方法を教えて頂けたら助かります。 保存は .Image.Save("c:\test.jpg", Imaging.ImageFormat.Jpeg) で保存しています。 宜しくお願い致します。

  • 画像の透過処理について。

    Form(画像)/PictureBox1(画像)/PictureBox2(透過画像) という順番で画像を重ねてGIF画像での透過処理を行い、 PictureBox2にPictureBox1の画像を表示させたいのですが やってみるとPictureBox1の画像もすり抜けてFormの画像が 表示されてしまいます。 これはどうしようもないんでしょうか? 環境は2008です。

  • 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

  • 画像を取得して編集(VB2010)

    VB2010を触ってますが、まだまだです。 そろそろやりたい事への取り組みを始めたいのですが、 画像ファイル(jpeg、gif、png)を読み込んで編集して書き出したいのです。 編集できれば良いので表示はできなくてもOKです。 このような場合、pictureboxに入れてグラフィックメソッドで 編集するのが良いのでしょうか。 それともBitmapオブジェクトに入れてそこで編集する方が良いのでしょうか。 何となくこちらの方が正統な気がしているのですが。。。 よく分からないのでご指導下さい。

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

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

  • VisualBasic2008を使い、画像のドラッグ&ドロップをしたい

    VisualBasic2008を使い、画像のドラッグ&ドロップをしたい まだVB2008の勉強を始めたばかりの初心者です。 PictureBox1~PictureBox4に表示されている画像をドラッグ&ドロップでPictureBox5にコピーして表示させたいのですが、どのようなプログラムにすればいいのかが分かりません。 PictureBox5には何度でもPictureBox1~PictureBox4の画像をドラッグ&ドロップで入れ替えができ、PictureBox1~PictureBox4の画像はそのままになるようにしたいです。 よろしくお願いします。

  • C++で画像を被らないようにランダムに表示

    初めまして。 現在、C++を勉強しているものです。 配列に収納された画像をランダムにpictureboxに表示させたいです。 しかし、ダブらないようにしたいです。 1枚だけならどこかでソースが載っていたのでそれをコピーしたらいいだけだと思うので問題はないのですが、3枚をランダム表示させ、なおかつ同じ物が表示しないようにしたいのです。 1枚目の画像が決定した後、それ以外の画像からランダムに選択。さらに1枚目・2枚目の画像が決定したらそれ以外の画像からランダムに選択。 初心者の案としては (1)重複なしの乱数を生成 (2)生成された数を配列と参照する (3)参照された画像をpictureboxに表示する こんな事が出来ますか? また、どうしたらいいのでしょうか? よろしくお願いします。

  • デスクトップに直接画像を表示したい

    VB2010なのですが、FormやPictureBox等を使用せず、 デスクトップに直接画像ファイルを貼り付けるような事はできないでしょうか? XY座標を指定し、デスクトップの特定の位置へ"最前面"の状態で 画像を表示したいのですが・・・FormやPictureBoxを使用せずに 実現する方法が分かりません。 APIを使用したらいけるのでしょうか。 似たような動作としては、壁紙を変更するといった方法を 見つけたのですが、あれだとバックに表示されてしまうので "最前面にしたい"という点で困ってしまいました。 簡単なサンプルや参考になるページ等、アドバイスをいただけないでしょうか。

専門家に質問してみよう