Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi BitBlt (https://www.delphipraxis.net/22419-bitblt.html)

daniel8520 17. Mai 2004 16:09


BitBlt
 
Hallo,

ich mal eine Bitte an euch/dich.
Könnte mir mal bitte Jemand die API-Funktion BitBlt erklären. Das wär echt nett von euch/dir!

sakura 17. Mai 2004 16:17

Re: BitBlt
 
Da die Funktion doch recht umfangreich ist, würde ich Dich bitten zu sagen, was Du nicht verstehst.

Komplette Beschreibung

Suche: MSDN-Library durchsuchenBitBlt

Kurz: Die Funktion BitBlt kopiert Daten bitweise von einem Pixel-Rechteck zu einem anderen Pixel-Rechteck. Alle nötigen Konvertierungen zwischen den verschiedenen Device-Kontexten werden dabei beachtet.

...:cat:...

daniel8520 17. Mai 2004 16:47

Re: BitBlt
 
Mir würden ja die einzelnen Parameter genügen. Ich steig in der MSDN nicht so wirklich durch.
Insbesondere den letzten Parameter versteh ich nicht.

sakura 17. Mai 2004 16:55

Re: BitBlt
 
Der letzte Parameter gibt an, wie das Original auf das Ziel transferiert werden soll. Einige Beispiele (einfach mal durchtesten)
  • SRCCOPY :: einfaches Kopieren
  • NOTSRCCOPY :: invertiertes Bild kopieren
  • SRCINVERT :: Exclusives oder zwischen Quelle und Ziel, nur wenn die Bits der beiden unterschiedlich ist, wird das Zielbit gesetzt, ansonsten gelöscht.
  • ...

...:cat:...

daniel8520 17. Mai 2004 16:59

Re: BitBlt
 
Eigentlich wollte ich ja nur ein Bild ainer PaintBox als BMP speichern. Im Bereich mUltimedia hat mir dann gesagt, dass ich ein TBitmap nehemen soll, und das Canavas über BitBlt kopieren soll. Also hab ich folgendes probiert:
Delphi-Quellcode:
procedure TMainForm.Button3Click(Sender: TObject);
var
    Test: TBitmap;
begin
   Test := TBitmap.Create;
   Test.Height := 400;
   Test.Width := 400;
   BitBlt(Test.Handle,0,0,400,400,PaintBox.Canvas.Handle,0,0,SRCCOPY);
   Test.SaveToFile('C:\test.bmp');

end;
Es wurde aber nur ein weißes Bild gepeichert. Natürlich war im Canavas der PaintBox etwas drin. Könnte mir jemdand sagen, wie ich das anstellen muss!?

daniel8520 17. Mai 2004 17:10

Re: BitBlt
 
Ahh, ich hab's schon. Hab ein falsches Handle genommen.

Jetzt geht's.
Danke für eure Hilfe!
:dp:

Muetze1 17. Mai 2004 22:25

Re: BitBlt
 
Moin!

Damit die anderen auch noch was von haben die vielleicht ein gleiches Problem haben:

Delphi-Quellcode:
BitBlt(Test.Canvas.Handle,0,0,400,400,PaintBox.Canvas.Handle,0,0,SRCCOPY);
Das Canvas. fehlte beim Bitmap.

MfG
Muetze1

Die Muhkuh 4. Sep 2004 18:04

Re: BitBlt
 
Hi,

meine Frage passt jetzt grad hierher.

Und zwar:

ich hab folgenden Code:

Delphi-Quellcode:
  with TOpenDialog.Create(nil) do
  begin
    if Execute then
    begin
      Bitmap.LoadFromFile(Filename);
      BitBlt(Ebene1.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, Bitmap.Canvas.Handle , 0, 0, SRCCOPY);
      Ebene1.Width := Bitmap.Width;
      Ebene1.Height := Bitmap.Height;
    end;
  end;
Ebene1 ist eine paintbox, aber da passiert nix. Das Bild wird nicht angezeigt.

dizzy 4. Sep 2004 18:06

Re: BitBlt
 
Setz die Breite und Höhe mal vorm BitBlt ;)

Die Muhkuh 4. Sep 2004 18:08

Re: BitBlt
 
Zitat:

Zitat von dizzy
Setz die Breite und Höhe mal vorm BitBlt ;)

Geht auch nüscht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr.
Seite 1 von 2  1 2      

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