- 題名: FillEllipseで書いた後
- 日時: 2006/10/27 11:59:38
- ID: 18029
- この記事の返信元:
- (なし)
- この記事への返信:
- [18032] Re[1]: FillEllipseで書いた後2006/10/27 21:14:11
- ツリーを表示
■No18029に返信(totoさんの記事)
こんばんは エツです。
1.Pictureboxと同じ大きさのビットマップを準備しPictureboxの背景(消したくない画像)をビットマップに描画し、
Pictureboxのimage に設定する
2.楕円をPicturebox.Paint で描画し、移動するときは再描画する。
簡単なサンプルを上げます。
フォームにPicturebox とボタンを3つ配置します。
ボタン1は背景をビットマップに描画しPictureboxのimage に設定する。
ボタン2は楕円を書く
ボタン3は楕円を移動
変数Crectは楕円の位置と大きさを保持する変数
-------以下サンプル-------
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'ビットマップに座標を引きPictureBox1に関連させる
PictureBox1.BackColor = Color.White
Dim bm As New Bitmap(PictureBox1.Size.Width, PictureBox1.Size.Height)
Dim g As Graphics = Graphics.FromImage(bm)
For i As Integer = 1 To 9
Dim dxy As Single = 1 / 10
g.DrawLine(Pens.Gray, 0, i * bm.Size.Height * dxy, bm.Width, i * bm.Size.Height * dxy)
g.DrawLine(Pens.Gray, i * bm.Size.Width * dxy, 0, i * bm.Size.Width * dxy, bm.Height)
Next
PictureBox1.Image = bm
g.Dispose()
End Sub
'--------------------------
'円の座標を保持
Private Crect As RectangleF = Nothing
'--------------------------
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'PictureBox1に円を書く
Crect = New RectangleF(10, 10, 50, 50)
PictureBox1.Invalidate()
PictureBox1.Update()
End Sub
'--------------------------
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'PictureBox1の円を移動する
Crect = New RectangleF(Crect.X + 10, Crect.Y + 10, Crect.Width, Crect.Height)
PictureBox1.Invalidate()
PictureBox1.Update()
End Sub
'--------------------------
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
If Crect = Nothing Then Exit Sub
Dim g As Graphics = e.Graphics
g.FillEllipse(Brushes.Blue, Crect)
End Sub
分類:[.NET]
PictureboxにFillEllipseで楕円を書いた後キー入力されたら楕円を移動したいのですが移動するときに今の楕円を消して新しい座標に楕円を書くようにするには
どのような手法があるでしょうか。
(Pictureboxの背景は座標軸が格子でかいてあります。楕円を消すときに
格子は消したくないのですが)
VB2005,WindosXP