PictureBoxに図形(矢印)を描画するには?


VB初心者  2009-01-20 14:11:20  No: 141328  IP: 192.*.*.*

マウスで指定した位置に、片方が矢印である線分を描画するアプリケーションを作成したいと思っています。1度目のクリックで線分の始点が、2度目のクリックで線分の終点が指定されるものとします。初心者のためどこが間違ってるか分かりません。アドバイス等お願いします。

[プログラム]
Public Class Form1

    Dim g As Graphics

    Private Sub PictMain_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictMain.MouseDown
        Dim start_x As Integer = e.X
        Dim start_y As Integer = e.Y

        Dim end_x As Integer = e.X
        Dim end_y As Integer = e.Y

  Dim BPen As New Pen(Color.Black, 2)
  BPen.EndCap = LineCap.ArrowAnchor

        g.DrawLine(BPen, start_x, start_y, end_x, end_y)

        PictMain.Invalidate()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        PictMain.Image = New Bitmap(PictMain.Width, PictMain.Height)
        g = Graphics.FromImage(PictMain.Image)
    End Sub

    Private Sub ButtonClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonClear.Click
        g.Clear(Color.White)
        PictMain.Invalidate()
    End Sub
End Class

編集 削除
魔界の仮面弁士  2009-01-20 14:37:57  No: 141329  IP: 192.*.*.*

> Dim start_x As Integer = e.X
> Dim end_x As Integer = e.X

これだと、start と end が常に同じ座標になってしまいますので、
「1回目」「2回目」の判定を行うコードを足してみてください。

編集 削除