Thema: Delphi BitBlt-Komponente

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#6

Re: BitBlt-Komponente

  Alt 3. Aug 2007, 12:20
Zitat von Bomberbb:
Nun ich habe es momentan so:
Delphi-Quellcode:
var
  Zeichenflaeche:TCanvas;
  BitBltBitMap:BBitmap;

Procedure TPaintPanel.Paint;
Begin //----- Paint -----
  BitBltBitmap.width := Self.Width;
  BitBltBitmap.height := Self.Height;
  Zeichenflaeche := BitBltBitmap.canvas;
  
  If Assigned(fOnPaint) then
    fOnPaint(Self);

  BitBlt(Self.Canvas.Handle, 0, 0, Self.width, Self.height, BitBltBitmap.Canvas.Handle, 0, 0, SRCCOPY);
  Zeichenflaeche := Self.canvas;
End; //----- Paint -----
funktioniert so weit auch ganz gut. Finde nur das ist nicht ganz konsequent, da ich ja nun im Prog alle Aufrufe von Paintpanel1.canvas durch Paintpanel1.Zeichenflaeche ersetzen muss(und das sind einige)...
Ich weiss nicht was du damit bezwecken willst.
Denke aber das es sinnvoller wäre wenn du dich ganz von canvas verabschiedest.

Sinnvoll wäre es wenn du unter verwendung von BITMAPINFO , CreateDIBSection, CreateCompatibleDC
ein temporäres Bitmap erstellst und dieses auf die komponente welche über ein reales Handle verfügt( Image kannst nicht verwenden)
mit BitBlt auf die komponente zeichnest.

Was du dann nur benötigst ist ein handle und ein DC welches du an BitBlt übergibst.
Das Handle mußt du natürlich über GetDC in ein DC konvertieren.

BitBlt(SourceDC, x, y, w, h,DestDC, 0, 0, SRCCOPY) gruss Emil
  Mit Zitat antworten Zitat