So löschen Sie eine gezeichnete Kreis in c# windows form?
Die ich gezeichnet habe, einen Kreis in windows form
Pen pen = new Pen(Color.Black, 3);
Graphics gr = this.CreateGraphics();
gr.DrawEllipse(pen, 5,5,20,20);
Wie es zu löschen...
Entweder Grafik.Clear() mit einer gewünschten Farbe, verwenden Sie die Logik, die ich gepostet als Antwort, oder führen Sie diese.Invalidate(). Die letzten werden einfach zwingen, die form neu zu zeichnen, es ist client-Bereich, die effektiv löschen Sie den Kreis.
Da Sie über
Einfach das Fenster minimieren und wiederherstellen es wieder.
Da Sie über
this.CreateGraphics
haben, sind Sie wahrscheinlich nicht das zeichnen in der Paint-Ereignis. Dies bedeutet, dass jede Zeit Ihre form wird neu gezeichnet (weil Sie entweder rufen Sie die Invalidate
Methode oder weil Windows sendet eine WM_PAINT
Nachricht), dein Kreis wird sowieso gelöscht. Wenn Sie wollen, dass der Kreis sein, semi-permanenten (zumindest dort zu bleiben, bis Sie Sie explizit löschen), müssen Sie sicherstellen, dass Sie ziehen es in der Paint-Ereignisprozedur für das Formular, mit dem Graphics-Objekt übergeben wird, in der PaintEventArgs
für die Veranstaltung.Einfach das Fenster minimieren und wiederherstellen es wieder.
InformationsquelleAutor Genius | 2010-11-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie entkräften die Auslosung der region, die Sie aktualisieren möchten zum Beispiel:
auf dem Formular...
InformationsquelleAutor shin
Haben Sie, um klar Ihre Grafik:
Aber alle gezogenen zahlen werden gelöscht. Ganz einfach, Sie müssen dann neu zeichnen alle Figuren außer diesem Kreis.
Können Sie auch die Invalidate-Methode:
Gibt es eine region neu gezeichnet werden innerhalb Ihrer Grafiken. Aber wenn Sie sich überschneidende Figuren haben Sie neu gezeichnet, die Figuren, die Sie wollen, sichtbar in der region, die außer dem Kreis.
Dies kann chaotisch, Sie können prüfen wollen, wie man ein control graph oder Verwendung eines graph-layout -Bibliothek.
Eine Kontrolle graph ist in der Regel auf der Grundlage, wie eine Grafik-layout-engine aufgebaut ist. Daher könnte es helfen, festzustellen, was muss gezogen werden oder ungültig. Es ist nur eine öffnung auf das Thema...
es gibt keine Grafiken.klar, und wenn Sie tun Graphics gr; gr=....; gr.clear () - es gibt einen Fehler, da braucht es ein argument, eine Farbe
href="https://msdn.microsoft.com/en-us/library/system.drawing.graphics.clear.aspx" >MSDN sagt "Grafik.Löschen Löscht die gesamte Zeichenfläche auf und füllt Sie mit der angegebenen Hintergrundfarbe.". Damit Sie gerade zu tun haben
CreateGraphics().Clear(Form.ActiveForm.BackColor)
InformationsquelleAutor Cédric Guillemette
Angenommen, Sie abonnieren, um die Paint-Ereignis oder das überschreiben der protected OnPaint-routine, dann müssen Sie so etwas wie dieses:
Dann, wenn Sie beenden möchten, malen Sie einen Kreis:
Wenn ein Quadrat innerhalb des Kreises und Sie entkräften die region rund um den Kreis, das Quadrat werden auch für ungültig erklärt werden. Mit dieser Technik haben Sie, etwas zu zeichnen, dass sich in dieser region, die Sie sichtbar.
Das ist leicht getan, wenn Sie einfach gesagt, die Logik außerhalb der bedingten überprüfen und Kraft Aufhebungs-wenn Sie möchten, dass das Formular neu gezeichnet werden. Die OnPaint-Logik heißt jedes einzelne mal, wenn Sie die form invalidiert eine region (oder das ganze Formular client-Bereich).
InformationsquelleAutor Chris Hutchinson
Du nicht "löschen" per se, es gibt nichts zu löschen. Es ist eine Zeichnung, zeichnen Sie etwas anderes über Sie oder Sie können rufen Sie die
Graphics.Clear()
Methode.InformationsquelleAutor CodingGorilla
Können Sie eine Abbildung von gleichen Dimensionen mit der backColor des Steuerelements, in dem Sie zeichnen
verwenden Sie nach Ihrem code deaktivieren Ihre Figur.
InformationsquelleAutor Javed Akram
Wenn u verwenden
Invalidate()
und nicht funktioniert, stellen Sie einepanel.Refresh()
.Dass Arbeit auf Sie.
InformationsquelleAutor josep
In der Tat, Sie kann löschen eurem Kreis, und nichts, aber Ihr Kreis.
Alles, was Sie brauchen, ist so etwas wie ein screenshot der "vor-Zustand" der Bereich, den Sie löschen möchten, um eine
TextureBrush
. Sie können erreichen, dass der Schritt von so etwas wie dieses:Der ersten Zeile geben Sie ein bitmap in die windows forms-Größe. Die zweite Zeile speichern Sie einen screenshot von ihm in die
_Background
-bitmap.Nun erstellen Sie eine
TextureBrush
:Das nächste, was Sie brauchen, sind die Abmessungen des Kreises, so sollten Sie speichern Sie in eine variable, wenn Sie nicht einen fix Wert. Wenn du Sie bei der hand, Sie können deaktivieren Sie die spezifischen Bereich, wie hier:
Getan!
Selbst komplexe zahlen sind, können gelöscht werden, indem dieser, wie ein
GraphicsPath
zum Beispiel:InformationsquelleAutor VampireSilence
Ist es sehr einfach, löschen Sie eine gezeichnete Kreis von c ist.
Gibt es nur vier Schritte:-
InformationsquelleAutor jithin