mit Maus in Windows Form zeichnen



  • Hallo,

    ich versuche gerad mit dem VS 2013 eine Windows Form Anwendung zu erstellen in der man mit der Maus Linien zeichnen kann. Es geht an sich auch mit Grafikobjekt im MouseMoveEvent aber dadurch das man nach jeder Mausbewegung die zuletzt gezeichnete Linie iwie löschen muss flackert das total. Ich habe es schon mit Refresh versucht, damit den Hintergrund neuzufärben und auch jede zuletzt gezeichnete Linie vor dem zeichnen der neuen mit der Hintergrundfarbe nach zu zeichnen, aber das flackern bleibt.
    Ich habe es auch schon mit OpenGL in einem NativeWindow versucht aber da krieg ich keinen MouseEvent hin. Um den MouseEvent ins NativeWindow zu implementieren habe ich es mal mit diesem Beispiel versucht http://msdn.microsoft.com/en-us/library/system.windows.forms.nativewindow(v=vs.110).aspx jedoch kann man hier kein OpenGL verwenden, dabei kommt dann eine Fehlermeldung mit 223 Fehlern, jedenfalls erkennt die Gl.h sich scheinbar selbst nicht mehr.

    Kennt einer ne Lösung für das Problem mit dem Flackern und/oder wie kann man ein OpenGL Window mit einem MouseEvent in einer Windows Form implementieren?

    Das Code Beispiel hab ich bewusst mal eingespart, wenn es dennoch gewünscht ist dann werd ich es nachreichen!

    Grüße hAYX 🙂



  • Klingt so, als ob Du "Double Buffering" (Doppelpufferung) benötigst 😉
    http://de.wikipedia.org/wiki/Doppelpufferung

    ** DoubleBuffer **
    If true, drawing is performed in a buffer, and after it completes, the result is output to the screen. Double-buffering prevents flicker caused by the redrawing of the control. If you set DoubleBuffer to true, you should also set UserPaint and AllPaintingInWmPaint to true.

    Siehe auch:
    * http://msdn.microsoft.com/en-us/library/b367a457(v=vs.110).aspx
    * http://msdn.microsoft.com/en-us/library/system.windows.forms.controlstyles(v=vs.110).aspx



  • schönen dank auf jeden Fall für deine Antwort,

    ich hab es jetzt mal mit C# und dem manuellen Buffern gemacht und es scheint zu funktionieren...also zumindest sehe ich jetzt keine Verstörungen mehr...

    weißt du zufällig wie man in ein OpenGL Window was in einer Windows Form eingebettet ist einen MouseEvent implementiert?

    Ich wollte dieses Beispiel als Grundlage nehmen nur wie gesagt der MauseEvent: http://www.codeproject.com/Articles/16051/Creating-an-OpenGL-view-on-a-Windows-Form

    Grüße hAYX



  • hAYX schrieb:

    weißt du zufällig wie man in ein OpenGL Window was in einer Windows Form eingebettet ist einen MouseEvent implementiert?

    Leider nein.


Log in to reply