非.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ランキング
-
ListBoxで改行したい
-
画面に絵を出す方法
-
角が丸い長方形の描画
-
c言語 ちらつき
-
Word 描画オブジェクトを削除...
-
for文の実行速度を遅くしたいの...
-
BCB5:Canvas->FrameRectで描画...
-
C++/CLIを用いて画像をクリップ...
-
CADとC言語のリンク
-
C# シューティングゲーム ...
-
iPhoneのニューラルエンジンっ...
-
カメラスクロールするのを動画...
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
実行時エラー 438になった時の...
-
VBA(エクセル)で自動的にボタン...
-
【C#/Java?】try-catchでcatch...
-
ユーザーフォームを表示中にシ...
-
private subモジュールを他のモ...
-
「Columns("A:C")」の列文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
給紙トレイをダイアログを使わ...
-
Word 描画オブジェクトを削除...
-
VB.NETでグラフィックを描くと...
-
C#を用いて描画する四角形の角...
-
C# DrawImage 物理サイズでな...
-
ビットマップに描画をしてピク...
-
PowerPoint の VBA
-
画面に絵を出す方法
-
DrawLineで引いた線が消えてし...
-
VC++ ドラッグしながらの図の...
-
円の頂点の求め方を知りたいです。
-
MFCでのコンボボックスについて
-
画面の再描画について
-
Windows10のC#のピクチャーボッ...
-
フォームに描画して表示をスク...
-
VB PictureBoxの描画範囲
-
PictureBoxのダブルバッファリ...
-
C#で壁の当たり判定と自キャラ...
おすすめ情報