Hej!
Jag undrar om det på nåt sätt går att få ut kordinaten på var ett klick på en picturebox ägt rum?
Eller om nån kan peka på en tutorial om hur man gör ett enkelt ritprogram skulle det vara trevligt också =)
MouseMove, MouseDown och MouseUp får koordinaterna relativt Picture-boxens övre vänstra hörn ifrån Windows.
Här är tex ett "komplett" ritprogram:
Private Sub Form_Load()
Picture1.AutoRedraw = True
Picture1.FillStyle = vbSolid
End Sub
Private Sub Picture1_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
If Button = vbKeyLButton Then Picture1.Circle (X, Y), 50
End Sub
Public Class Form1
Inherits System.Windows.Forms.Form
Dim form As String
Dim val1x, val1y, val2x, val2y As Integer
Dim mycolor As Color
Dim tjocklek As Integer
Public Sub rektangel()
End Sub
Public Sub cirkel()
End Sub
Public Sub linje()
End Sub
Public Sub rita(ByVal kord As Point)
Dim punkt As Graphics = Picture1.CreateGraphics
Dim p As Point = New Point(val1x, val1y)
Dim d As Point = New Point(val1x, val1y)
Dim pen1 As Pen = New Pen(mycolor, tjocklek)
punkt.DrawLine(pen1, val1x, val1y, val2x, val2y)
punkt.DrawLine(pen1, p, d)
End Sub
' Klippt bort lite
Private Sub Picture1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Picture1.Click
If val1x = 0 And val1y = 0 Then
val1x = Int(Picture1.MousePosition.X)
val1y = Int(Picture1.MousePosition.Y)
StatusBar1.Text = "X: " & val1x & " Y: " & val1y
rita(Picture1.MousePosition())
Else
val2x = Int(Picture1.MousePosition.X)
val2y = Int(Picture1.MousePosition.Y)
StatusBar1.Text = ""
Select Case form
Case "rektangel"
rektangel()
Case "cirkel"
cirkel()
Case "linje"
linje()
End Select
val1x = 0
val1y = 0
val2x = 0
val2y = 0
End If
End Sub
Är min kod för tillfället, och det fungerar förutom att när man läser in koord "val1x = Int(Picture1.MousePosition.X)" osv så verkar den ta var på skärmen och inte var på pictureboxen man klickat?
Nu förstår jag ingenting? MousePosition är en statisk property på Control som mäter relativt skärmen (som du skriver). Du borde inte ens kunna kompilera om du försöker anropa den på en instans.
Kan du inte använda MouseDown istf Click? Då får du ju tillgång till e.X och e.Y som ovan.