Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Graphics
alf468
myCSharp.de - Member



Dabei seit:
Beiträge: 196

Themenstarter:

Graphics

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
alf468
myCSharp.de - Member



Dabei seit:
Beiträge: 196

Themenstarter:

beantworten | zitieren | melden

Ä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.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
0815Coder
myCSharp.de - Member



Dabei seit:
Beiträge: 767

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers