Rechteck zeichen und anschließend mit Maus Größe ändern



  • Guten Morgen,

    hätte mal ne Frage. Ist es möglich in VC++ ein Rechteck zeichnen zu lassen, bei dem man anschließend die Größe per Maus ändern kann. D.h. wenn ich mit der Maus über eine Seite fahre, dann kommen die Pfeile und ich kann es frei verschieben.
    Hat das schonmal jemand von euch gemacht ? Brauche es um komfortabel ein Bereich von einem Bild auswählen zu können.

    Vielen Dank schonmal im voraus
    Gruss


  • Mod

    Ja! Die MFC hat die CRectTracker Klasse und es gibt ein Sample der MFC dafür.
    http://msdn.microsoft.com/en-us/library/41731bbw(VS.80).aspx
    http://msdn.microsoft.com/de-de/library/ms177537.aspx

    Wenn Du direkt nach CRecTracker suchst wirst Du x-Beispiele finden.



  • Ah richtig cool. Vielen Dank Martin. Das ist genau das was ich gesucht habe



  • Hallo, ich bins nochmal.

    Und zwar: Ist es möglich das Rechteck von CRectTracker auch farbig zu machen ? Hab schon viel gegoogelt und hab immer nur ne lösung gefunden wo die MFC Klasse editiert wird und das will ich nicht. Es gibt doch bestimmt eine Möglichkeit die Farbe auch aus meinem Programm raus zu ändern oder ? Mit FillSolidRect oder so.

    Danke im voraus



  • habs hinbekommen.... er hats nur nicht richtig aktualisiert.
    Jetzt währe es aber trotzdem gut, wenn mir vllt. jemand sagen kann, wie ich nur den rahmen einfärbe. Danke


  • Mod

    Nein! Den gibt es nicht.
    Es hätte genügt wenn Du einen Blick in die Sourcen der MFC geworfen hättest.
    void CRectTracker::Draw(CDC* pDC) const

    Dort ist klar zu sehen, dass für den solidLine Mode ein BLACK_PEN verwendet wird und die Gripper mit RGB(0, 0, 0) gezeichnet werden.



  • So jetzt bin ichs nochmal. Also ich hab jetzt alles soweit hinbekommen. Jetzt hab ich nur noch das Problem, dass das CRectTracker zwar immer gezeichnet wird, doch immer ganz hinten von der Wertigkeit steht, d.h. dass wenn ich das CRectTracker Objekt auf einen Button oder ein Bild ziehe, dass ich es dann zwar noch sehen aber nicht mehr daraufzugreifen kann ( geht nicht mehr zum verschieben und kann die größe nicht mehr ändern ). Kann man das irgendwie nach vorne


  • Mod

    Du willst das mit Controls machen?
    Dann hast Du ein Problem der Zeichenebenen. Dein Recttracker wird dann nämlich vermutlich auf der Ebene des Dialoges gezeichnet. Der Button liegt aberr darüber.

    Du müsstest also ein durchsichtiges Fenster über allem anlegen, in dem dann dein CRectTracker liegt.

    So wie CRectTracker gebautist, funktioniert das nur mit normalen Elementen, die auf der selben Ebene gezeichnet werden.



  • Achso. Also das mit dem Button war nur ein Beispiel. Eig. bräuchte ich das um das CRectTracker Objejkt über ein erstelltes WebcamFenster zu legen um Bereiche der Webcam zu markieren.

    Der Stream wird erzeugt mit capCreateCaptureWindow.

    Aber da wird wohl das gleiche Problem sein mit den Ebenen oder ?



  • Habs...

    "WS_DISABLED" war der Schlüssel zum Erfolg


Log in to reply