AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap schnell kopieren

Ein Thema von KPBecker · begonnen am 2. Okt 2007 · letzter Beitrag vom 2. Okt 2007
Antwort Antwort
KPBecker

Registriert seit: 1. Mär 2004
Ort: Mannheim
120 Beiträge
 
Delphi 2010 Architect
 
#1

Bitmap schnell kopieren

  Alt 2. Okt 2007, 16:22
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
  Mit Zitat antworten Zitat
Benutzerbild von f.siebler
f.siebler

Registriert seit: 15. Jan 2007
Ort: Hamburg
170 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Bitmap schnell kopieren

  Alt 2. Okt 2007, 16:24
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?
Viele Grüße aus Hamburg
Fabian
sql-praxis.net: sql von der Theorie in die Praxis...
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: Bitmap schnell kopieren

  Alt 2. Okt 2007, 16:25
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.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Bitmap schnell kopieren

  Alt 2. Okt 2007, 16:27
So etwas?

bmp2.Assign(bmp1);
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
KPBecker

Registriert seit: 1. Mär 2004
Ort: Mannheim
120 Beiträge
 
Delphi 2010 Architect
 
#5

Re: Bitmap schnell kopieren

  Alt 2. Okt 2007, 16:30
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;
  Mit Zitat antworten Zitat
KPBecker

Registriert seit: 1. Mär 2004
Ort: Mannheim
120 Beiträge
 
Delphi 2010 Architect
 
#6

Re: Bitmap schnell kopieren

  Alt 2. Okt 2007, 16:32
Hallo, Andreas,

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

Klaus-Peter
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Bitmap schnell kopieren

  Alt 2. Okt 2007, 16:51
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?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Bitmap schnell kopieren

  Alt 2. Okt 2007, 17:00
Zitat von igel457:
So etwas?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;
Andreas
  Mit Zitat antworten Zitat
KPBecker

Registriert seit: 1. Mär 2004
Ort: Mannheim
120 Beiträge
 
Delphi 2010 Architect
 
#9

Re: Bitmap schnell kopieren

  Alt 2. Okt 2007, 17:09
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:50 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