
非.NETユーザーだったのですが、.NETを勉強しています。
フォーム上に描画を行いたいのですが、下のモジュールを入力して、
実行した場合○と□が描画されます。
しかし、フォームの大きさ以上の描画をした場合に、表示しきれないので
スクロールバーを表示したいと思っています。
HScrollBarをフォームに貼り付けてBottomに移動した後、
実行した所、描画は行われるのですがスクロールバーが効きません。
なんらかのプロパティを変更しなければならないのでしょうか。
それとも、この場合根本的にHScrollBarコントロールを使用できないの
でしょうか。
Private Sub cmd描画_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmd描画.Click
Dim g As Graphics
Dim p As Pen
Dim b As SolidBrush
Dim r1, r2, r3 As Rectangle
g = Me.CreateGraphics
p = New Pen(Color.Red)
b = New SolidBrush(Color.Blue)
r1 = New Rectangle(10, 10, 50, 50)
g.DrawEllipse(p, r1)
r2 = New Rectangle(70, 70, 50, 50)
g.FillRectangle(b, r2)
r3 = New Rectangle(500, 10, 50, 50)
g.DrawEllipse(p, r3)
End Sub
よろしくお願い申し上げます。

No.2ベストアンサー
- 回答日時:
補足があったことに今気がつきました(笑)
遅くなりましたが。
通常はスクロールイベントから移動量を取得し、移動させたいオブジェクトの座標からその移動量を引く…といった書き方でいいと思います。
ただ、移動したいオブジェクトが複数ある場合は、ひとつひとつ移動処理を書くのが面倒なので通常PictureBoxなどを使います。
下記例では、Form上にcmd描画ボタン、PictureBox1、HScrollBar1があり、PictureBox1の中にPictureBox2があるものとします。またPictureBox2はデフォルトで.visible=falseにしています。
なお、PictureBox2は、描写したいオブジェが全て収まるよう、あらかじめ大きなサイズにしておいてください。
Private Sub cmd描画_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmd描画.Click
'はじめから図形が描画されていてもいい場合は、わざわざこんな処理は要りません。
PictureBox2.Visible = True
End Sub
Private Sub PictureBox2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox2.Paint
'Paintイベントに描画処理を書くことで、Formが最小化されたり画面外に出た場合でも、描画したものが消えたりしません。
Dim g As Graphics = e.Graphics
Dim p As Pen
Dim b As SolidBrush
Dim r1, r2, r3 As Rectangle
p = New Pen(Color.Red)
b = New SolidBrush(Color.Blue)
r1 = New Rectangle(10, 10, 50, 50)
g.DrawEllipse(p, r1)
r2 = New Rectangle(70, 70, 50, 50)
g.FillRectangle(b, r2)
r3 = New Rectangle(500, 10, 50, 50)
g.DrawEllipse(p, r3)
p.Dispose()
b.Dispose()
End Sub
Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
'スクロールした分、PictureBox2を左に動かします。
PictureBox2.Left = -e.NewValue
End Sub
ご回答有難うございます。お手間かけてすみません。
思い通りのスクロールが出来ました。
こちらを利用してみます。有難うございました^-^
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) Visual Basic : ImageListの画像がそろったときにメッセージを表示 1 2023/07/20 13:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ピクチャーボックスでの折線グ...
-
Imagickについての質問です。
-
ビットマップに描画をしてピク...
-
描画した線分の長さの誤差
-
BCB5:Canvas->FrameRectで描画...
-
文字のちらつきを抑えるには
-
N88互換BASIC for Windows95
-
shapeを描画
-
Linux上でのC++言語を用いたメ...
-
取得したデータでグラフを描画...
-
VC++2010 で線形の描画について...
-
N88BASICでシューティングゲー...
-
VB2005 PictureBox1に線を描きたい
-
MySQLのデータをグラフ化して表...
-
VC++ ドラッグしながらの図の...
-
delphi 画面のちらつき
-
VC++2010 で線形の描画について...
-
Word 数式の一体化
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
給紙トレイをダイアログを使わ...
-
C#を用いて描画する四角形の角...
-
vb6のTEXTBOX
-
PowerPoint の VBA
-
for文の実行速度を遅くしたいの...
-
win32api複数のタイマーを同時...
-
MFCでのコンボボックスについて
-
VB.netで図形描画ができません^^;
-
花火のアルゴリズム
-
図の削除直後の再描画
-
円の頂点の求め方を知りたいです。
-
C# DrawImage 物理サイズでな...
-
VB.NETでグラフィックを描くと...
-
PictureBoxのダブルバッファリ...
-
色を合成するには
-
C++/CLIを用いて画像をクリップ...
-
【Delphi】 Canvasへの描画につ...
-
エクセルのレーダーチャート 0...
-
C#で壁の当たり判定と自キャラ...
おすすめ情報