selbstgezeichnete Kreise automatisch per Mausziehen anpassen



  • Hi Leute,

    bisher zeichne ich Kreise mit Hilfe der MFC immer so:

    blatt->Ellipse(xk,yk,farbe,radius);
    

    blatt ist vom Typ CClientDC. nun klatscht er mir das auch schön in mein window rein, nur wie kann ich einstellen, dass die größe verändert wird, wenn ich auf den kreis draufklicke und ich ihn durch die gegend ziehe?


  • Administrator

    Uff ... naja ... da musst du schon fast ein Objekt, bzw. eine Klasse für die Ellipse einfügen.
    Dazu die Windowsnachrichten WM_LBUTTONDOWN, WM_MOUSEMOVE und WM_LBUTTONUP abfangen und behandeln.
    Bei WM_LBUTTONDOWN musst du schauen, ob der Zeiger in deiner Elipse ist, wenn das der Fall ist musst du eine Variable auf True setzen oder sowas. Bei WM_MOUSEMOVE veränderst du die Koordinaten entsprechend, wenn der Wert der Variable auf True ist. Und bei WM_LBUTTONUP setzt du den Wert der Variable wieder auf False, damit nichts mehr verändert wird, wenn man die Maus bewegt. Verstanden was ich meine? Ansonsten könnte ich noch ein wenig ein längeres Beispiel reinsetzen, wenn es sein muss.

    Grüssli



  • Ist relativ schwierig, Du must halt herausfinden ob der Nutzer gerade in deine Ellipse geklickt hat ( geht für eine Ellipse rechnerisch noch ganz gut ) und dann entsprechend darauf reagieren. Für kompliziertere o. veilfältigere Formen würde ich wahrscheinlich jedem Objekt eine spez. Farbe zuordenen und dann parallel einfarbig die Grundfläche des Objekts in einen Speicher-DC zeichnen. Damit bekommst Du aus der Farbe des Pixels wieder dein jeweiliges Objekt.


Anmelden zum Antworten