非.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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ListBoxで改行したい
-
scilabでのグラフ描画時の軸設定
-
Word 描画オブジェクトを削除...
-
リアルタイムで再描画
-
Gnuplotの統計関数のエラー
-
VB.NETでphotoshopのレイヤーの...
-
フォームに描画して表示をスク...
-
Word:描画オブジェクト内の画...
-
for文の実行速度を遅くしたいの...
-
画面に絵を出す方法
-
VC++ MFCチェックボックスの色...
-
ピクチャーボックスのサイズを...
-
線の描画速度
-
Visual C++ MaskedTextBoxの右...
-
ユーザーフォームを表示中にシ...
-
eclipseのデバッグ中に変数の値...
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
ExcelVBAのユーザーフォームの...
-
パソコンへの「Dropbox...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
PowerPoint の VBA
-
給紙トレイをダイアログを使わ...
-
VB.NETでグラフィックを描くと...
-
ビットマップに描画をしてピク...
-
win32api複数のタイマーを同時...
-
Excel VBA:コントロールボタン...
-
画面に絵を出す方法
-
c言語 ちらつき
-
VC++ ドラッグしながらの図の...
-
Word 描画オブジェクトを削除...
-
N88BASICでシューティングゲー...
-
scilabでのグラフ描画時の軸設定
-
vb6のTEXTBOX
-
C#で壁の当たり判定と自キャラ...
-
図の削除直後の再描画
-
ボタンの更新速度について
-
C#(.net) ドロー系ソフト作成 ...
-
PictureBoxのダブルバッファリ...
おすすめ情報