Also etwas was ein klein wenig was bringt ist, wenn du deine Canvasinstanz, den DC und das Temporäre Bitmap nicht jedes mal erstellst sondern diese zu Begin deiner Anwendung erstellst und beim Beenden wieder frei gibst. Bzw, wenn du lediglich mit BitBlt arbeitest, dann benötigst du die Canvas von dem Desktop auch nicht mehr.
Mit
BITBLT kannst du auch arbeiten. Dieser Befehl ist ein direkter Windows GDI Befehl. Dadurch kannst du dir overhead durch die VCL ersparen. Vor allem, da CopyRect auch die Daten nicht 1:1 kopiert sondern diese auch in der Größe verändert. Evtl optimiert Windows das intern dann mit BitBlt besser. Ich persönlich habe bisher immer nur mit der VCL gearbeitet und empfand das nicht direkt als Langsam. Aber kommt auch immer drauf an was man will.
Sonnst musst du nur auf deine Parameter hören.
Delphi-Quelltext
1: 2:
| BitBlt(TempBmp.Canvas.Handle, 0, 0, Tr.Right, Tr.Bottom, DC, 0, 0, PATCOPY); |
Das zurück kopieren funktioniert ähnlich dabei musst du lediglich die Handles austauschen. Wenn ich mich nicht vertue. Also ich gebe keine Garantie auf den Code. Habs jetzt nur so dahin geschrieben.
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.