2 Stimmen

Nicht in der Lage, die Koordinaten einer Ellipse nach der Rotation neu anzuordnen

Ich habe eine Ellipse gezeichnet. Ich habe 8 Griffe dazu.

Die Griffe sind TopLeft, MidTop, TopRight, MidLeft, MidRight, BottomLeft, MidBottom, BottomRight.

Immer wenn ein Benutzer den Mauszeiger auf einen dieser Griffe bewegt, wird der Cursor angezeigt. Um den Cursor anzuzeigen, habe ich mich auf die MS-WORD-Form Ellipse bezogen.

Mein Problem tritt auf, wenn ich eine Ellipse drehe oder ein Spiegelbild davon mache. Ich kann die Koordinaten nicht neu anordnen, daher werden die Cursor nicht richtig angezeigt.

Bitte helfen Sie.

Hinweis: Bitte öffnen Sie MS-WORD. Gehe zu "EINFÜGEN" Wählen Sie "FORMEN" Wählen Sie in Formular "Ellipse" aus. Zeichne sie. Wenn Sie darauf klicken, sehen Sie 8 Punkte um die Ellipsenform herum. Diese werden Griffe genannt. Wenn Sie den Mauszeiger über einen der Griffe bewegen, überprüfen Sie die Cursoranzeige. Die Cursoranzeige hängt vom Griff ab. Ich muss die gleiche Funktionalität wie in MS-WORD in VC++ implementieren.

BEARBEITEN - Zusätzliche Informationen aus den Kommentaren hinzugefügt:

Das Problem besteht darin, die Koordinaten nach dem Drehen neu anzuordnen. Wenn ich die Ellipse leicht nach rechts drehe (probieren Sie es in MS-WORD). Welchen Punkt soll ich als Top-Left betrachten? Ich habe versucht, mit dem obigen Code neu zu ordnen. Aber es hat für viele Fälle nicht funktioniert. Das Herausfinden des Top-Left-Punktes nachdem ich die Ellipse rotiert habe, ist das Hauptproblem, dem ich mich derzeit gegenüber sehe.

struct SortingFunction 
{ 
    bool operator()(const CRect& a, const CRect& b) 
    { 
        if (a.left == b.left) 
            return a.top <= b.top; else return a.left < b.left; 
    } 
}

0voto

Orochi Punkte 375

Griffe sind auch Punkte, alles, was Sie tun müssen, ist die Menge der Drehung zu identifizieren, die die Ellipse durchlaufen hat, und die Griffe mit dieser Drehung zu drehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X