Einzelnen Beitrag anzeigen

Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

Re: nonVCL - Bitmap in Bitmap kopieren

  Alt 25. Sep 2005, 21:26
Ich schreib's jetzt mal aus dem Kopf, habe hier schon alles beendet (da fehlen noch etliche try-finally-Blöcke)...

Delphi-Quellcode:
// Bitmap holen, DC erzeugen und hineinselektieren
// myDC malt jetzt in die Bitmap
myBitmap := SendMessage(GetDlgItem(hwnd, IDC_IMG1), STM_GETIMAGE, IMAGE_BITMAP, 0);
myDC := CreateCompatibleDC(0);
oldBitmap := SelectObject(myDC, myBitmap);

// Zweiten DC erzeugen und Ausgangsbitmap hineinselektieren
// myDC2 malt jetzt mit der Ressourcenbitmap
myDC2 := CreateCompatibleDC(0);
oldBitmap2 := SelectObject(myDC2, ResBitmap);

// Zeichnen
BitBlt(myDC, 0, 0, 32, 32, myDC2, count * 32 - 32, Animation[AnimType].Offset * 32, SRCCOPY);

// Zweiten DC freigeben
SelectObject(myDC2, oldBitmap2);
DeleteDC(myDC2);

// Ersten DC freigeben
SelectObject(myDC, oldBitmap);
DeleteDC(myDC);

// Bitmap wieder in das Element setzen, ggf. nicht nötig!
SendMessage(GetDlgItem(hwnd, IDC_IMG1), STM_SETIMAGE, IMAGE_BITMAP, myBitmap);

// Neu zeichnen
InvalidateRect(GetDlgItem(hwnd, IDC_IMG1), nil, TRUE);
und das nur ein mal (für jeden Animationsschritt) und nicht bei jedem WM_PAINT.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat