• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォームに描画して表示をスクロールしたい)

フォームに描画して表示をスクロールしたい

このQ&Aのポイント
  • 非.NETユーザーが.NETを勉強中です。フォーム上に描画を行いたいが、表示しきれない場合にスクロールバーを表示したいです。
  • HScrollBarを使用して描画を行うが、スクロールバーが効かない問題が発生しています。
  • 根本的にHScrollBarコントロールを使用できないのか、プロパティの変更が必要なのか、どうすればスクロールバーを表示できるのか分かりません。

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

  • ベストアンサー
  • NYOI
  • ベストアンサー率58% (56/96)
回答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

lancasters
質問者

お礼

ご回答有難うございます。お手間かけてすみません。 思い通りのスクロールが出来ました。 こちらを利用してみます。有難うございました^-^

その他の回答 (1)

  • NYOI
  • ベストアンサー率58% (56/96)
回答No.1

HScrollBarのScrollイベントにはどういうコードを書いているんですか?

lancasters
質問者

補足

ご回答有難うございます。 >HScrollBarのScrollイベントにはどういうコードを書いているんですか? あぁ…コードは全く書いていません。 書かなくても動作すると思い込みでした…。 お手間の掛からないコードでしたら書き込み願えますか。 よろしくお願い申し上げます。