![]() |
mit BitBlt Ausschnitt aus einem hBitmap in ein hDC bringen
Guten Abend =)
Also wie im Titel bereits angekündigt, funktioniert es bei mir nicht richtig aus einem hBitmap einen bestimmten Ausschnitt in ein hDC zu bringen. Das hBitmap stammt aus der Zwischenablage und wurde einfach mit
Delphi-Quellcode:
soweit, sogut
hBmp := GetClipboardData(CF_BITMAP);
Ich hab jetzt schon so viel probiert und geschrieben und auskommentiert, das ich garnichtmehr weiß, was nun eigentlich richtig hätte sein sollen. Von der Theorie her, müsste ich ja dann nur 2 HDC's erstellen, eins, was die Größe dieses einen Ausschnitts hat und eins, was so groß ist, wie das hBitmap aus der Zwischenablage. Dann hab ich 2 HDC's und könnte theoretisch bequem mit BitBlt den Ausschnitt aus dem großen HDC in das kleine vorbereitete HDC kopieren. Könnte mir jemand kurz per Code-Schnippsel weiterhelfen? Ich seh vor lauter SelectObjects und so nimmer durch :cry: Schonmal riesen Danke an euch |
Re: mit BitBlt Ausschnitt aus einem hBitmap in ein hDC bring
Weiß denn niemand einen Rat :pale:
|
Re: mit BitBlt Ausschnitt aus einem hBitmap in ein hDC bring
hab noch nie mit Clipboard gearbeitet und bin dementsprechend jetzt stolz das der erste versuch gleich so erfolgreich ist. So sollte es gehen
Delphi-Quellcode:
var LHandle: Cardinal;
LBitmap: TBitmap; begin if OpenClipboard(handle) then begin LHandle := GetClipboardData(CF_BITMAP); if LHandle <> 0 then begin LBitmap := TBitmap.Create; LBitmap.Handle := LHandle; //Jetzt kann mit LBitmap das Bitmap aus der Zwischenablage genutzt werden //place the source here LBitmap.Handle := 0; LBitmap.Free; end; CloseClipboard; end; end; |
Re: mit BitBlt Ausschnitt aus einem hBitmap in ein hDC bring
Also danke, aber das ist nicht ganz das, was ich wollte ;) Ich habs inzwischen selber hinbekommen, ich hab die ganze Zeit nur die falschen X und Y Werte verändert. Anstatt das zu kopierende 'Viereck' auf dem Source-DC zu verschieben, hab ich das kopierte Bild auf dem neuen DC verschoben :wall:
Problem doch noch nich ganz gelöst Wenn ich
Delphi-Quellcode:
BitBlt(mybmp.Canvas.Handle, 0, 0, 6, 10, memDC, 145, 581, SRCCOPY);
benutze, bekomme ich das gewünschte Ergebnis aber warum bringt
Delphi-Quellcode:
BitBlt(imgDC, 0, 0, 6, 10, memDC, 145, 581, SRCCOPY);
mybmp.Canvas.Handle := imgDC; dann nur ein weißes Bitmap?? ich versteh das nicht :( |
Re: mit BitBlt Ausschnitt aus einem hBitmap in ein hDC bring
Hallo!
Wie hast du denn den imgDC erstellt? Und warum nutzt du nicht die erste, funktionierende Variante? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz