Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Schnelles Löschen von allen Pixeln im Image (https://www.delphipraxis.net/41578-schnelles-loeschen-von-allen-pixeln-im-image.html)

Alexander Roth 5. Mär 2005 14:41


Schnelles Löschen von allen Pixeln im Image
 
Hallo,

langer Titel, ich weis.
Also ich zeichne auf ein Image indem ich die Farbe einzelner Pixel ändere. Wie bekomme ich diese Farbhaltigen Pixel schnell weg, ohne dies zu machen, da dies zu lange dauert und das Ganze bild verschwinden lässt: form1.image1.picture:=nil;

Ich würde gerne so etwas haben wie das nur im Image: form1.refresh;

Hoffe ich habs einigermaßen verständlich erklärt.

Alexander

Danke im Vorraus

dizzy 5. Mär 2005 14:44

Re: Schnelles Löschen von allen Pixeln im Image
 
Du willst also dein Bild "leeren", also alle Bildinformationen löschen? Canvas.Rectangle in Verbindung mit Pen und Brush ;)
(Und bei der G32-Lib gibts ein "TBitmap32.Clear(farbe)" ;))

Alexander Roth 5. Mär 2005 15:03

Re: Schnelles Löschen von allen Pixeln im Image
 
Hi, das funktioniert zwar ist aber genauso langsam wie picture:=nil;
Als notlösung sehe ich es dann alle Punkte die ich gezeichnet habe wieder wegzu machen. Einzeln.
Aber danke.

dizzy 5. Mär 2005 15:17

Re: Schnelles Löschen von allen Pixeln im Image
 
Das wird noch viel langsamer, vor allem wenn du mit Canvas.Pixels arbeitest. Der Weg über Rectangle ist imho bei der Verwendung von Canvas die schnellste Möglichkeit ein Bild zu leeren. Eventuell kann man aber auch was mit Scanline und FillChar drehen...

Luckie 5. Mär 2005 15:27

Re: Schnelles Löschen von allen Pixeln im Image
 
Ersatell ein leeres Bitmap und kopioer das mit BitBlt auf den Canvas. Eventuell ist das schneller. Was hast du denn überhaupt vor?

Alexander Roth 6. Mär 2005 08:06

Re: Schnelles Löschen von allen Pixeln im Image
 
Hi,

ich muss das Bitmap immer wieder in einer Schleife zwischen dem Zeichnen löschen. Das mit dem Bitmap laden ist mir zu umständlich, ich brauchte so einen Befehl: bitmap.canvas.allpixels:=clwhite;

Jens Schumann 6. Mär 2005 08:39

Re: Schnelles Löschen von allen Pixeln im Image
 
Zitat:

Zitat von Alexander Roth
Hi,

ich muss das Bitmap immer wieder in einer Schleife zwischen dem Zeichnen löschen. Das mit dem Bitmap laden ist mir zu umständlich, ich brauchte so einen Befehl: bitmap.canvas.allpixels:=clwhite;

Du hast zwar immer noch nicht verraten was Du vor hast aber wenn Du es schnell haben möchtest, dann steckt in den Beiträgen von dizzy und Luckie die Lösung.
Um in einen akzeptablen Geschwindigkeit auf einen Image zu malen benötigst Du sowieso eine TBitmap.
Zuerst führst Du alle Zeichenoperationen auf dieser Bitmap aus. Das Löschen aller Pixel kannst Du wie von dizzy vorgeschlagen mit Rectangle erledigen. Anschließend kopierst Du die Canvas dieser Bitmap mit BitBlt ins Image. Das ist die schnellste Methode, die ich im GDI Kontext kenne.

Alexander Roth 6. Mär 2005 09:44

Re: Schnelles Löschen von allen Pixeln im Image
 
Hi ich bin ja auh ein bischen blöd. Auf Tbitmap hätte ich auch selbst kommen können. Danke für den hinweis. Dann geht alles klar.

Danke für alles.

Tschau


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