- ベストアンサー
VB.NETのグラフィック描画について
- VB.NETのグラフィック描画について詳しく教えてください。
- グラフィック描画の引数を持たないサブルーチンプロシージャはPictureBox_paint内で実行され、引数を持つ場合は別途定義して呼び出してください。
- グラフィック描画において、X座標とY座標を引数としたサブルーチンプロシージャ内で描画させたい場合、PictureBox1.CreateGraphics()を使用する必要があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
返信遅れまして申し訳御座いません フォーム=frmGurafu ピクチャ=Picture1 開発環境の設定にもよりますが、コードのイメージは以下のようになります │ 田 Windows フォーム デザイナで生成されたコード │ │ │Private g As Graphics │ 日Private Sub frmGurafu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load │ PictureBox1.Image = New Bitmap(PictureBox1.Width, PictureBox1.Height) │ g = Graphics.FromImage(PictureBox1.Image) │'別のSub │ sakugatate() '縦を描く │ sakugayoko() '横を描く │End Sub │ 日Sub sakugatate() │ Dim i As Integer │ For i = 1 To 5 │ g.DrawLine(Pens.Pink, i * 20, 0, i * 20, 100) │ Next │End Sub │ 日Sub sakugayoko() │ Dim i As Integer │ For i = 1 To 5 │ g.DrawLine(Pens.Pink, 0, i * 20, 100, i * 20) │ Next │End Sub これで、どうでしょうか?
その他の回答 (2)
- misonoburubon
- ベストアンサー率25% (1/4)
'フォームにPictureBox1とButton1を貼り付けて 'フォーム内の共通obj宣言 Private g As Graphics 'フォームロードに g = PictureBox1.CreateGraphics 'ボタンクリック Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click kaku() End Sub 'こんなSubを作成して Private Sub kaku() Dim I As Integer For I = 1 To 40 keisen(I * 10) Next End Sub '繰り返される部分 Private Sub keisen(ByVal Px As Integer) g.DrawLine(Pens.Pink, Px, 0, Px, PictureBox1.Height) End Sub グラフの罫線はこんな処理で描きます このままですと、ウインドウの裏に隠れると消えてしまいますので 346706番の方法とあわせれば、書けると思います。 スイマセン↓これは大間違いでした Private g As Graphics = Graphics.FromImage(PictureBox1.Image)
お礼
この度は、大変お世話になりました。 前回教えていただいた方法と組み合わせてやってみます 有難うございました。 ちなみに346706番とは、前回のお返事分でしょうか?
補足
すみません、前回教えていただいた方法でグラフィックが書けたのですが、 dim g as graphics=・・・・ PictureBox1.Image・・・・ を複数のSubプロシージャに書くと、先のプロシージャで表示されていたグラフィックが消えてしまいます。 例えば、座標を書くプロシージャとグラフデータを書くプロシージャと分けていた 場合、座標プロシージャを呼んでグラフデータプロシージャを呼ぶと座標が消えます。宣言の場所方法が違うのでしょうか よろしくお願い致します
- misonoburubon
- ベストアンサー率25% (1/4)
dim g As ~ をSubの外に宣言してみては如何でしょうか? Private g As Graphics = Graphics.FromImage(PictureBox1.Image) Private p As New Pen(Color.Black) private sub hyouji(***) g.DrawLine(p, x1, y1, x2, y2) End sub …はずしていたら、すいません
補足
お返事遅れましてすみませんでした 回答有難うございます。 dim g as をプロシージャの外に出すとコンパイルエラーになってしまいました あとPrivate g As Graphics = Graphics.FromImage(PictureBox1.Image) のpraivate部分が引っかかってしまうのです。 記述方法がちがっていましたら、御指摘ください よろしくお願い致します
お礼
お返事いただきまして さっそく試して上手くいきました。 とても親切に教えていただいて有難うございました。