xlib : refrech von Bildschirm



  • hallo,
    ich bin mit einem allgemeinen Problem konfrontiert, das mit Windows api oder OpenGl als auch xlib nicht einfach lösbar ist und zwar das refrech von Bildschirm beim graphische Oberfläche.

    ich verwende momentan xlib unter linux.
    Problem:
    in das Hauptfenster wird gezeichnet, aber sobald man das Fenster minimisiert ist das Inhalt weg, das gleiche passiert wenn man einen Bereich mit einer anderen Fenster unsichtbar macht, dann ist der inhalt dieses bereich auch weg

    meine Lösung:

    ich habe versucht beim Überlappung eines dialogfeld(rechteck) den hintegrund zu sichern und wieder anzeigen wenn das dialogfeld beendetist.
    ich habe das zu sicherende bereich in ein bild gerettet über XGetImage und mit XPutImage wieder das Bild in der Fenster einfüget wenn das Dialogfenster beendet ist.
    das programm stürtzt aber ab und gibt die BadMatch (invalid parameter attributtes) als Fehler aus.
    Code:

    if ((image = XGetImage(display, hwndAct, 10, 10, 160, 160, AllPlanes, XYPixmap)) == NULL )

    Display *display
    Window hwndAct= fenster

    hat jemand schon damit was gemacht oder kennt jemand eine andere möglichkeit , wie man diese Problem löst (mit area)?
    muss man für getImage speicher vorher allokieren, was mache ich da falsch ?

    danke im voraus
    youssef



  • also ich hab das bisher immer so gemacht, dass ich alles auf ein Pixmap gemalt habe und dann auf das Fenster geblittet habe bei jedem Redraw.



  • hallo,
    erstmal danke, kannst du bitte das ein bisien mehr erklären, beispiel oder code hier posten

    youssef



  • naja, der Code war ein bisschen groß, da es Konzept Code für ein C++ Widget System war und auch nicht mehr komplett vollständig erhalten, da das System mittlerweile im Umdesign Prozess ist.
    Du erzeugst eben ein Pixmap und malst auf dem Pixmap und wenn du dann das Expose Event für das Fenster empfängst, kopierst du das Pixmap mit XCopyPlane oder so auf das Window

    http://tronche.com/gui/x/xlib/function-index.html



  • hallo,
    danke für die Erklärung, ich werde die variante von pixmap ausprobieren.
    youssef


Anmelden zum Antworten