DirectDraw mit normalem GUI-Fenster?



  • Bräuchte mal Tips und Beispiele (bzw. Links zu Beispielen)!
    Und zwar hab ich eine grafische Oberfläche ähnlich Visio, auf der verschiedene Elemente angeordnet werden, die den Status von COM-Objekten anzeigen. (die COM-Objekte interessieren hier nicht weiter).
    Der Status kann aber auch sehr häufig ein Bild sein, dass von Videograbbing-Modulen kommt. Jetzt hab ich bei Video-Grabbing-Software gesehen, dass dort sehr viel mit DDraw gearbeitet wird.
    Wenn jetzt mehrere Bilder bzw. LiveStreams gleichzeitig auf einem DC dargestellt werden sollen, was bietet sich am günstigsten an?
    P.S. Die rechteckigen Elemente, innerhalb derer die LiveStreams angezeigt werden, müssen unabhängig invalidierbar,verschiebbar und in der Grösse änderbar sein.
    Bitte um Ideen und Howtos !

    Danke im Voraus
    René



  • Hi !

    Bei DDraw hast du *ein* Fenster wo do alles draufpacken kannst. Das "draufpacken" heißt bei DDraw blitten, und sieht etwa so aus (Pseudo Code):

    bild->FastBlt (Koordinaten, Transparenz, Sonstnochwas);
    

    Du kannst also mehrere Bilder (=Surfaces) übertragen -und sie dabei skalieren, verschieben wie du lustig bist 😉
    Jedoch musst du das Verschieben selbst Hand implementieren, d.h. selbst eine kleine Bounding Box Kollisionserkennung schreiben. Sollte aber ziemlich easy sein.

    Einzelne Bereiche kannst du afaik in DDraw nicht invalidieren. Was möchtest du denn genau machen / was meinst du mit invalidieren ? (Ich stell mir darunter vor, dass dort einfach nix gezeichnet wird, quasi ein schwarzes Loch, das alle Pixel verschluckt)

    Für (praktische) Ansätze empfehle ich dir die Lektüre eines beliebigen DDraw Tutorials 🙂



  • MIt Invalidieren meinte ich das gleiche wie bei einem 'normalen' DC. Da die Aufnahme- und Hintergrundberechnungspriorität höher sein soll als die Ausgabe, werden Bereiche der Grafik als 'Neuzeichnen notwendig' markiert. Sobald die Grafikengine (das GDI) dann die Zeit hat, den Bereich neu zu zeichnen, wird dies durch die WM_PAINT-Nachricht erledigt. So bekomme ich selbst mit sehr vielen Objekten, welche neugezeichnet werden müssen, eine flimmerfreie und resourcenschonende Darstellung.



  • Overlay



  • MSDN:

    Overlays are assumed to be on top of all other screen components

    Sollen sie aber nicht.


Anmelden zum Antworten