tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
529
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Krankfried Krankfried ist offline Grünschnabel
    Registriert seit
    Mar 2008
    Beiträge
    2
    Hallo!

    Mein Programm nimmt ein Videosignal auf. Das funktioniert auch super.
    Nun möchte ich zusätzlich ein Live-Bild auf das MFC-Fenster bringen. Quasi immer das aktuelle Bild, das gerade von extern empfangen wurde.

    Bisher zeichne ich meine Bitmaps folgendermaßen:
    Code :
    1
    2
    3
    4
    5
    6
    
    CPaintDC dc(this);
    HDC bitmap_dc = CreateCompatibleDC(dc);
    HBITMAP old_bitmap=(HBITMAP)SelectObject(bitmap_dc, hBitmap);
    BitBlt(dc, 18, 24, 256+18, 386+24, bitmap_dc, 0,0, SRCCOPY);
    SelectObject(bitmap_dc, old_bitmap);
    DeleteObject(bitmap_dc);
    Das ganze ist in der OnPaint()-Funktion.

    Im Code mache ich dann dies:
    Code :
    1
    2
    3
    4
    
    (...)
    hBitmap = CreateBitmapFromPixel(hdcDIB, 256, 384, 24, buffer);
    (...)
    RedrawWindow(NULL,NULL,RDW_INVALIDATE|RDW_UPDATENOW);

    Das funktioniert auch ganz gut, sogar relativ flimmerfrei. Jedoch bremst die RedrawWindow-Funktion meinen ganzen Code aus, wodurch auch die Aufnahme mit ca. 10fps weniger läuft, als ohne diesen RedrawWindow-Aufruf...

    Habe gehört, man kann auch DirectDraw oder so zum Zeichnen benutzen.
    Suche jetzt seit gestern Nachmittag stundenlang bei Google nach einer Lösung, konnte aber nichts Brauchbares finden.

    Ich hoffe, ihr könnt mir mit einem Codeschnipsel helfen. Noch besser wäre ein kleines Beispielprojekt, denn aus sowas lernt man ja besonders gut, finde ich.
    Geändert von Krankfried (19.10.08 um 11:52 Uhr)
     

  2. #2
    Thomasio Thomasio ist offline Mitglied Platin
    Registriert seit
    Aug 2006
    Beiträge
    680
    Solange Aufnahme und Wiedergabe im gleichen Thread laufen werden die sich immer gegenseitig Rechenzeit wegnehmen.
    Ich kann dir kein Codeschnipsel geben, weil das schon in der Grundstruktur vom Programm eingebaut gehört, aber du solltest die beiden Funktionen in separaten Threads unterbringen.
     

Ähnliche Themen

  1. MFC SDI | Per GDI in Bitmap zeichnen?
    Von eurostar123 im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 08.03.10, 21:35
  2. Bitmap auf Desktop zeichnen
    Von Kaiser206 im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 12.07.08, 23:12
  3. Antworten: 1
    Letzter Beitrag: 19.10.05, 14:58
  4. Auf Bitmap zeichnen
    Von Mr_P1nk im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 28.02.05, 09:24
  5. Fenster Region aus Bitmap
    Von EriFo im Forum VisualStudio & MFC
    Antworten: 4
    Letzter Beitrag: 27.02.05, 22:56