Hallo,
ich habe folgendes Problem und bin diesbezüglich leider nirgends fündig geworden.
Wenn der User auf einem Panel Control mit der linken Maustaste an eine beliebige Stelle klickt, soll das der Anfangspunkt der Linie sein. Wenn jetzt die Maustaste geklickt bleibt und der Mauscursor sich ändert, muss sich der Endpunkt der Linie immer ändern. d.h. dass die Linie immer wieder neu gezeichnet werden muss. Die alte Linie muss natürlich entfernt werden.
Bis auf ein wichtiges Detail, klappt eigentlich alles. Obwohl ich ihn, nachdem ich Panel1.Invalidate() aufgerufen habe, die aktuelle Linie zeichne, löscht er dieses und zeigt sie nicht an. Was mache ich falsch?
Hier der relevante Bereich meines Codes:
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
panel1.Invalidate();
lokaleKoordinaten = panel1.PointToClient(Cursor.Position);
if (MouseStatus)
{
ZeichneLinie(mousePos,lokaleKoordinaten );
}
}
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
mausGeklickt();
}
private void ZeichneLinie(Point p1, Point p2)
{
Graphics gr = panel1.CreateGraphics();
gr.DrawLine(new Pen(Brushes.Blue, 3), p1, p2);
gr.Dispose();
}
private void panel1_MouseUp(object sender, MouseEventArgs e)
{
mausKlickGeloest();
}
private void mausGeklickt()
{
MouseStatus = true;
mousePos = lokaleKoordinaten;
}
Point lokaleKoordinaten;
bool MouseStatus = false;
Point mousePos;
ich habe folgendes Problem und bin diesbezüglich leider nirgends fündig geworden.
Wenn der User auf einem Panel Control mit der linken Maustaste an eine beliebige Stelle klickt, soll das der Anfangspunkt der Linie sein. Wenn jetzt die Maustaste geklickt bleibt und der Mauscursor sich ändert, muss sich der Endpunkt der Linie immer ändern. d.h. dass die Linie immer wieder neu gezeichnet werden muss. Die alte Linie muss natürlich entfernt werden.
Bis auf ein wichtiges Detail, klappt eigentlich alles. Obwohl ich ihn, nachdem ich Panel1.Invalidate() aufgerufen habe, die aktuelle Linie zeichne, löscht er dieses und zeigt sie nicht an. Was mache ich falsch?
Hier der relevante Bereich meines Codes:
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
panel1.Invalidate();
lokaleKoordinaten = panel1.PointToClient(Cursor.Position);
if (MouseStatus)
{
ZeichneLinie(mousePos,lokaleKoordinaten );
}
}
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
mausGeklickt();
}
private void ZeichneLinie(Point p1, Point p2)
{
Graphics gr = panel1.CreateGraphics();
gr.DrawLine(new Pen(Brushes.Blue, 3), p1, p2);
gr.Dispose();
}
private void panel1_MouseUp(object sender, MouseEventArgs e)
{
mausKlickGeloest();
}
private void mausGeklickt()
{
MouseStatus = true;
mousePos = lokaleKoordinaten;
}
Point lokaleKoordinaten;
bool MouseStatus = false;
Point mousePos;