Terminator2
Erfahrenes Mitglied
Hallo,
Habe eine PictureBox mit einem Bild, in dem ich dann weitere Objekte erzeugen will. Im Moment sind es nur gefüllt Rechtecke. Der Code funktioniert schon echt gut, ich würde nur gerne das Objekt während des Erzeugens sichtbar machen. Wenn ich die Maustaste drücke, lege ich damit den Startpunkt fest. Beim Loslassen wird der Endpunkt berechnet und das Rechteck gezeichnet. Während des Ziehens sieht man jedoch nichts. Kann mir jemand sagen, wie ich das Rechteck auch während ich die Maus bewege anzeige ohne dass sich die Felder alle überlagern?
Hier erstmal mein bisheriger Code:
Habe eine PictureBox mit einem Bild, in dem ich dann weitere Objekte erzeugen will. Im Moment sind es nur gefüllt Rechtecke. Der Code funktioniert schon echt gut, ich würde nur gerne das Objekt während des Erzeugens sichtbar machen. Wenn ich die Maustaste drücke, lege ich damit den Startpunkt fest. Beim Loslassen wird der Endpunkt berechnet und das Rechteck gezeichnet. Während des Ziehens sieht man jedoch nichts. Kann mir jemand sagen, wie ich das Rechteck auch während ich die Maus bewege anzeige ohne dass sich die Felder alle überlagern?
Hier erstmal mein bisheriger Code:
Code:
Public Class Form1
Private MausPosition(,) As Integer = Nothing
Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
ReDim MausPosition(0, 1)
MausPosition(0, 0) = e.X
MausPosition(0, 1) = e.Y
End Sub
Private Sub PictureBox1_MouseUp1(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
Dim GlasImage As New Bitmap(PictureBox1.Width, PictureBox1.Height)
GlasImage = PictureBox1.Image
Dim newGraphics As Graphics = Graphics.FromImage(GlasImage)
Dim X, Y, W, H As Integer
X = (GlasImage.Width / PictureBox1.Width) * MausPosition(0, 0)
Y = (GlasImage.Height / PictureBox1.Height) * MausPosition(0, 1)
W = (GlasImage.Width / PictureBox1.Width) * (e.X - MausPosition(0, 0))
H = (GlasImage.Height / PictureBox1.Height) * (e.Y - MausPosition(0, 1))
If W < 0 Then
W = W * (-1)
X = X - W
End If
If H < 0 Then
H = H * (-1)
Y = Y - H
End If
newGraphics.FillRectangle(New SolidBrush(Color.LimeGreen), X, Y, W, H)
newGraphics.Dispose()
PictureBox1.Image = GlasImage
End Sub
End Class