2009-04-05 11 views
0

Ich suche nach Drag/Size-Handle-Implementierungen oder Erklärungen.Drag/Size Handle-Implementierung

Vielleicht verwende ich die falsche Nomenklatur, aber ich meine die "Griffe", die um ein Objekt herum erscheinen (meistens in Zeichenprogrammen), wenn Sie es auswählen und eine Operation für dieses Objekt ausführen möchten, wie z. Maßstab, etc ...

Kann mir jemand auf eine OSS-Implementierung verweisen, die ich mir anschauen oder erklären kann, wie sie das umsetzen/umsetzen würden?

Antwort

0

In Windows ist dies wirklich kein Betriebssystem-Feature ... es ist etwas, das Sie selbst codieren.

Grundsätzlich erstellen Sie ein Array von Rechtecken, wo die Handles angezeigt werden sollen. Ihr Ziel ist hier ein zweifaches, das erste ist für das einfache Zeichnen der Griffe, das zweite ist für die Übergabe an einen PointInRectangle-Aufruf.

Das Aufrufbit "PointInRectangle" wird während MouseMove-Ereignissen ausgeführt. Hier entscheiden Sie basierend auf der aktuellen Mausposition, welchen Cursor die Maus haben soll (aka, in welchem ​​"Modus" sich die Maus befindet).

Die anderen kniffligen Bits behandeln die Maus und bestimmen, ob es Zeit ist, mit dem Ziehen zu beginnen, die Maus beim Ziehen und die Maus nach oben ziehen, um das Ziehen zu beenden.

Alles in allem kann es eine Menge Arbeit sein. Oh ... und vergiss nicht, dass du möglicherweise in deinem Zeichnungsfenster/Fenster scrollen musst, wenn du an die Ränder ziehst.

Je nachdem, was Sie gerade tun, sollten Sie einen Blick auf http://www.lassalle.com/ werfen. Sie haben ein großartiges, preisgünstiges Diagrammwerkzeug (nicht Diagramm).

+0

Ja, danke. Ich habe OSS (Open Source Software) als OS falsch geschrieben. Entschuldigung. – user79755

+0

FWIW - Dies ist kein Grafikwerkzeug. – user79755

+0

Was ist die MONO-Entwicklungsumgebung? Nachrüster? Es hat einen Formular-Designer, der Griffe verwendet. – user53794