Ich möchte gerne einen Kreis zeichnen und dieses mit den Tasten bewegen.Ist soweit auch alles kein Problem nur wenn ich später einen zweiten Kreis hinzufüge ist der erste wieder weg.
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Right)
{
this.Refresh();
x+=10;
g.FillEllipse(b, this.x, this.y, 20, 20);
}
}
Die Methode refresh() ist sicher nicht die richtitge für sowas.Aber wie macht man sowas?
Hallo alf468,
du darfst nicht in KeyDown zeichen, sondern musst alle Zeichenoperationen in Paint ausführen. Ich habe das gerade in zeichnen von Linien und Rechtecken beschrieben.
herbivore
Ändert aber nix an meinem Problem.Ich will den Kreis verschieben per Tastendruck.Wenn der Kreis ganz Rechts ist soll ein weiterer Kreis gezeichnet werden.Der alte Kreis soll aber dableiben.
Hallo alf468,
naja, so wie es jetzt ist, hast du noch ein paar Probleme, die du vielleicht noch gar nicht merkst. Du solltest also auf jeden Fall so umstellen, wie ich geschrieben habe.
Wenn du zwei Kreise haben willst, musst du zwei Kreise zeichnen, also zweimal FillEllipse aufrufen.
herbivore
probiers mal mit sowas in der art:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
// hier einen array, liste oder sonstwas mit Kreisen verwalten
Invalidate();
}
private void Paint(object sender, PaintEventArgs e)
{
// und hier alle kreise zeichnen
}
die Paint() Methode kannst du über den designer erstellen genau wie die keydown methode.
Invalidate() bewirkt, dass das fenster neu gezeichnet wird. Du kannst auch eine Klasse von Control ableiten, das Control ins Fenster legen und nur in dem Control zeichnen (myControl.Invalidate() ), dann musst du aber OnPaint des controls überschreiben, oder den Paint() event an das control hängen.
loop:
btst #6,$bfe001
bne.s loop
rts