Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Bitmap schnell kopieren (https://www.delphipraxis.net/100688-bitmap-schnell-kopieren.html)

KPBecker 2. Okt 2007 15:22


Bitmap schnell kopieren
 
Hallo, Delphi-Praktiker,

bei einer Zuweisung einer Bitmap auf eine andere wird wohl nicht kopiert sondern es werden nur die Adressen übereinander gelegt.
(Wenn man dann an der Zielbitmap z.B. height und width ändert, hat das unangenehme Auswirkungen an der Quellbitmap.)

Frage: Wie kann ich ein wirkliches Kopieren erreichen?
Mit BitBlt müßte es gehen, aber gibt es eine ebenso schnelle Methode, die in der eigentlichen Delphi-Umgebung bleibt ?

Beste Grüße
Klaus-Peter

f.siebler 2. Okt 2007 15:24

Re: Bitmap schnell kopieren
 
ehm, was machst du da genau? Ich weiß irgendwie nicht von was nach was du kopieren willst etc? Wie liegen die Daten vor? Arbeitest du mit TBitmap?

turboPASCAL 2. Okt 2007 15:25

Re: Bitmap schnell kopieren
 
Zitat:

Mit BitBlt müßte es gehen, aber gibt es eine ebenso schnelle Methode, die in der eigentlichen Delphi-Umgebung bleibt ?
Nein.

Die Delphifunktionen bauen auf die API von Windows auf.

igel457 2. Okt 2007 15:27

Re: Bitmap schnell kopieren
 
So etwas?

Delphi-Quellcode:
bmp2.Assign(bmp1);

KPBecker 2. Okt 2007 15:30

Re: Bitmap schnell kopieren
 
So etwa:

Delphi-Quellcode:
var
  bm1, bm2: TBitmap;
begin
  bm2:= bm1; //  Das genau klappt nicht
              //  man greift mit bm1 und bm2 auf dieselben Daten zu.
              //  Spätere Änderungen in bm1 sind daher immer auch gleich in bm2 sichtbar.
              //  Gewünscht ist eine wirkliche Kopie in bm2, die getrennt von bm1 bearbeitet werden kann.
end;

KPBecker 2. Okt 2007 15:32

Re: Bitmap schnell kopieren
 
Hallo, Andreas,

ja, so etwas, aber Deinen Vorschlag habe ich schon ausprobiert: Zugriffsfehler, obwohl beide bitmaps created sind.

Klaus-Peter

SirThornberry 2. Okt 2007 15:51

Re: Bitmap schnell kopieren
 
Zitat:

Zitat von turboPASCAL
Zitat:

Mit BitBlt müßte es gehen, aber gibt es eine ebenso schnelle Methode, die in der eigentlichen Delphi-Umgebung bleibt ?
Nein.

Die Delphifunktionen bauen auf die API von Windows auf.

Wenn man mit Scanline sich die Adresse auf die Daten holt und den Speicher kopiert, sollte das nicht schneller sein?

shmia 2. Okt 2007 16:00

Re: Bitmap schnell kopieren
 
Zitat:

Zitat von igel457
So etwas?
Delphi-Quellcode:
bmp2.Assign(bmp1);

Das ist genau die richtige Lösung, auch wenn KPBecker meint es ginge nicht.
Vorgehensweise:
2 TImage auf eine Formular setzen und jeweils zur Entwicklungszeit ein Bild laden (2 verschiedene)
Dann:
Delphi-Quellcode:
procedure TForm1.Button1Click(...);
begin
   Image1.Bitmap.Assign(Image2.Bitmap);
end;

KPBecker 2. Okt 2007 16:09

Re: Bitmap schnell kopieren
 
Ihr habt ja recht, der Fehler lag eine Zeile vorher:

Mit
bmp.assign(EinBitmap);

scheint tatsächlich das Bitmap kopiert zu werden (unabhängig von irgendwelchen TImages.

Vielen Dank,
Klaus-Peter


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:59 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