Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi mit BitBlt Ausschnitt aus einem hBitmap in ein hDC bringen (https://www.delphipraxis.net/38338-mit-bitblt-ausschnitt-aus-einem-hbitmap-ein-hdc-bringen.html)

Wusel 17. Jan 2005 22:18


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:
hBmp := GetClipboardData(CF_BITMAP);
soweit, sogut

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

Wusel 18. Jan 2005 19:54

Re: mit BitBlt Ausschnitt aus einem hBitmap in ein hDC bring
 
Weiß denn niemand einen Rat :pale:

SirThornberry 18. Jan 2005 20:11

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;

Wusel 18. Jan 2005 20:53

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 :(

Thunderman 20. Jan 2005 18:47

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 15:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz