Thema: Delphi CreateBitmap

Einzelnen Beitrag anzeigen

Thunderman

Registriert seit: 14. Jun 2002
Ort: Lüneburg
13 Beiträge
 
#5

Re: CreateBitmap

  Alt 19. Jan 2005, 11:57
Hallo!

Das ist ja eigentlich genau das, was ich mache. Und wenn ich das Bitmap mit LoadImage() lade funktioniert es auch. Nur wenn ich das Bitmap mit CreateBitmap selbst erzeuge geht es nicht. Ich habe nur leider kein TImage wie bei deinem Beispiel, sondern nur die Bilddaten roh im Speicher. Der Aufruf von CreateBitmap() damit funktioniert auch, aber er zeigt trotzdem kein Bild an. Also muss denke ich noch irgendtwas falsch sein. Hier jetzt das ganze als etwas besserer Beispielcode zum einfachereren nachvollziehen:
Delphi-Quellcode:
procedure Test(Bilddaten: Pointer; Breite, Hoehe, Planes, Bits: Integer);
var
  win_hdc : HDC;
  mem_hdc : HDC;
  bmp : HBITMAP;
begin
  bmp := CreateBitmap(Breite, Hoehe, Planes, Bits, Bilddaten); // Bitmap aus den Rohdaten erzeugen
  if bmp = 0 then
  begin
    ShowMessage('Fehler');
    Exit;
  end;
  win_hdc := GetDC(win_hWnd); // DC des Fensters
  mem_hdc := CreateCompatibleDC(win_hdc); // einen dazu kompatiblen DC im Speicher erzeugen
  SelectObject(mem_hdc, bmp); // das Bitmap in diesen DC wählen
  BitBlt(win_hdc, 0, 0, Breite, Hoehe, mem_hdc, 0, 0, SRCCOPY);
end;
Wenn man CreateBitmap() hier durch LoadImage(hInstance,'irgendeinbild.bmp',IMAGE_BITMAP,480,320,LR_LOADFROMFILE) ersetzt funktioniert das ganze.
Die Bilddaten lade ich mit einem TFileStream, was auch in einer anderen Anwendung wo ich sie mit OpenGL darstelle funktioniert.
Thunderman
Bei schwierigen Problemen entscheiden wir uns einfach für die richtige Lösung. Klar?
  Mit Zitat antworten Zitat