Einzelnen Beitrag anzeigen

matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#5

AW: PngDelphi - Transparent wird schwarz gedruckt.

  Alt 23. Jun 2014, 15:24
vieleicht hilft das

Code:
PROCEDURE PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap);
  VAR
    BitmapHeader: pBitmapInfo;
    BitmapImage: POINTER;
    HeaderSize: Cardinal;
    ImageSize  : DWORD;
BEGIN
  GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize);
  Bitmapheader := VirtualAlloc(nil, HeaderSize, MEM_COMMIT, PAGE_READWRITE);
  BitmapImage := VirtualAlloc(nil, ImageSize, MEM_COMMIT, PAGE_READWRITE);

  TRY
    GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapHeader^, BitmapImage^);

    StretchDIBits(Canvas.Handle,
                  DestRect.Left, DestRect.Top,    // Destination Origin
                  DestRect.Right - DestRect.Left, // Destination Width
                  DestRect.Bottom - DestRect.Top, // Destination Height
                  0, 0,                           // Source Origin
                  Bitmap.Width, Bitmap.Height,    // Source Width & Height
                  BitmapImage,
                  TBitmapInfo(BitmapHeader^),
                  DIB_RGB_COLORS,
                  SRCCOPY)
  FINALLY
    VirtualFree(Bitmapheader, 0, MEM_FREE);
    VirtualFree(bitmapimage, 0, MEM_FREE);
  END
END {PrintBitmap};
Matthias
Das Leben ist eines der härtesten.

Geändert von matashen (23. Jun 2014 um 15:25 Uhr) Grund: formatierung
  Mit Zitat antworten Zitat