WPF: Wie zeichnen Sie einen Kreis und ziehen Sie es um?
Ich bin neu in WPF.
Möchte ich zeichnen Sie einen kleinen Kreis auf Leinwand, wenn ich klicken Sie mit der Maus und in der Lage sein, um ziehen Sie ihn, um reibungslos.
Wie kann ich dies erreichen?
InformationsquelleAutor Pratik Deoghare | 2009-09-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
"was immer es ist" wichtig, weil die Platzierung von Elementen in WPF ist stark abhängig von den übergeordneten container.
Es ist einfach, etwas zu bewegen, 20px nach rechts innerhalb eines Canvas (fügen Sie einfach auf die Leinwand.Links), aber es ist viel schwieriger, so zu tun in einem Raster an (Sie haben für den Umgang mit Column, ColumnSpan und Marge).
Gibt es einen code project Artikel beschreibt, wie Sie per drag-Elemente innerhalb einer Leinwand: Ziehen Sie Elemente im Canvas-Bereich
Wenn Sie verschieben möchten nur, dass der Kreis und nicht die anderen Steuerelemente in einem vorhandenen Leinwand/Raster; ich schlage vor, Sie verwenden eine DragCanvas (aus dem Artikel) als eine überlagerung über den normalen Canvas-Grid.
Als für die "zeichne einen Kreis" Teil: benutzen Sie einfach eine Ellipse als element in der DragCanvas.
+1 für die code-Projekt link.
InformationsquelleAutor Daniel
Würde ich definieren, eine Leinwand und eine ellipse, die in der XAML-Datei:
Beachten Sie, dass canvas das Attribut
MouseDown="MouseMoveFunction"
. Wenn Sie auf die Leinwand, dass event-handler aufgerufen wird. In Fall, dass Sie wollen, es zu bewegen, als die Maus bewegt, verwenden SieMouseMove="MouseMoveFunction"
Dann aktualisieren Sie einfach die ellipse, die die position jedes mal wenn Sie die Maus bewegen. Der folgende code wird in der Funktion, die aufgerufen wird, auf Maus-events:
InformationsquelleAutor fersarr
War ich in der Lage, dies zu tun, alle im code, aber nicht in der Lage, verschieben Sie die Ellipse-element ein Kind-element von meiner Leinwand.
Habe ich kopiert den code unten damit Sie es reproduzieren können.
Zuerst erstellen Sie eine WPF-app namens WPFExample und stellen Sie sicher, dass Ihre wichtigste form ist die folgende:
Als Nächstes fügen Sie den code auf Ihrem Haupt-form:
Offensichtlich, den Fokus auf die Draw() Methode. Beachten Sie, dass ich Deaktivieren Sie die Leinwand jedes mal durch. Dann ziehe ich die neue Ellipse in der Position der Maus, wie ein schwarzer Kreis.
Nun jedes mal, wenn Sie die Maus bewegen Sie den schwarzen Kreis ist gelöscht von der Leinwand, wieder neu angelegt und dann gezeichnet in der neuen Position.
Hier ist ein Schnappschuss des app-wenn Sie es laufen und die Maus bewegen, wird der schwarze Kreis neu gezeichnet werden, wohin Sie die Maus bewegen, wenn Sie ziehen Sie es um.
Die rote ellipse war problematisch für mich, und ich konnte nie bekommen, es neu zu zeichnen, und konnte Sie nicht entfernen Sie es aus der Liste der Kinder und fügen Sie es wieder für das schnelle Beispiel.
InformationsquelleAutor raddevus