Langsames Neuzeichnen in MFC-Programmen führt zu "flackernden" Animationen

Dieses Thema im Forum "Programmieren" wurde erstellt von Birni16, 17. März 2005.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Birni16

    Birni16 ROM

    Registriert seit:
    17. März 2005
    Beiträge:
    3
    Das Problem:

    Das Neuzeichnen der Ansicht eines MFC-Programmes dauert meist ziemlich lange. Wenn das Neuzeichnen mehrmals sehr schnell hintereinander erfolgt (z.B. bei Animationen oder beim Ändern der Größe des Fensters), entsteht dadurch ein hässliches, ziemlich störendes "Flackern", v.a. wenn mit Invalidate(true) auch der Hintergrund gelöscht wird.

    Wie kann man dem entgegenwirken?
    Muss ich die (vermutlich schnelleren) API-Funktionen verwenden?

    THX im voraus!
     
  2. Michi0815

    Michi0815 Guest

    Registriert seit:
    7. Januar 2004
    Beiträge:
    3.429
    ich kenne zwar mfc nicht, aber die api-funktionen - und die sind recht lahm.

    für reine animationen verwende ich vorher im hintergrund gezeichnete images, die ich dann bei bedarf an die gewünschten stellen kopiere. dadurch bekomme ich halbwegs akzeptabe "refreshraten".
     
  3. Birni16

    Birni16 ROM

    Registriert seit:
    17. März 2005
    Beiträge:
    3
    Die MFC ist eine Sammlung von Klassen, die die Windows-Programmierung erleichtern sollen (oder so).
    Die MFC verwendet übrigens selbst die WinAPI - Zeichenfunktionen.
    Das Flackern ist leider bei jedem Neuzeichnen zu sehen, egal, ob man jede Sekunde 20 mal oder 1000 mal Neuzeichnen lässt, und ist auch vom zu Zeigenden fast unabhängig (egal ob ein Bitmap oder nur ein paar Linien gezeichnet werden) :aua:

    Werde mal weiger googlen.
     
  4. specialist7

    specialist7 Kbyte

    Registriert seit:
    29. Juli 2002
    Beiträge:
    490
  5. Birni16

    Birni16 ROM

    Registriert seit:
    17. März 2005
    Beiträge:
    3
    Habe folgendes gefunden:

    "Vor DirectX wurde Windows für schnelle Grafikdarstellung nicht als geeignet angesehen.
    Windows verfügt zwar über eine vielseitige hardwareunabhängige
    Grafikschnittstelle (Graphics Device Interface, GDI), welche jedoch leider eher langsam ist.
    Bei schneller, bewegter Grafik erwies sich das GDI als unzureichend.
    Deswegen waren lange Zeit schnelle grafische Anwendungen nur unter MS-DOS zu realisieren."

    "Through DirectDraw, Microsoft enables a much higher level of efficiency and speed in graphics-intensive
    applications for Windows than is possible with GDI."

    Die WinAPI-Zeichenfunktionen kann ich also vergessen.
    Wollte sowieso DirectX lernen...

    THX an alle!
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen