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 Wo wird der Inhalt in der Instanz von TImage gespeichert? (https://www.delphipraxis.net/33026-wo-wird-der-inhalt-der-instanz-von-timage-gespeichert.html)

sixarp 31. Okt 2004 17:58


Wo wird der Inhalt in der Instanz von TImage gespeichert?
 
Wenn ich etwas mit Canvas in eine Image-Instanz zeichne oder ein Bild hineinlade,
wo werden diese Daten gespeichert (Linien, usw.)?

In der internen TPicture-Instanz vom Image? :gruebel:

Danke für die Antworten :-D

sixarp 1. Nov 2004 16:48

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
*bush* :o

Dax 1. Nov 2004 16:51

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
Soweit ich weiss, speichert TImage seine Daten in einem Memory-DC und kopiert dann den Inhalt jedes mal beim Neuzeichnen mit auf die Canvas.. Kann aber auch sein, dass intern ein TBitmap verwendet wird.

jfheins 1. Nov 2004 16:52

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
Zitat:

Zitat von sixarp
In der internen TPicture-Instanz vom Image?

Naheliegend.
Also im Arbeitsspeicher

sixarp 7. Dez 2004 10:48

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
Zitat:

Zitat von jfheins
Zitat:

Zitat von sixarp
In der internen TPicture-Instanz vom Image?

Naheliegend.
Also im Arbeitsspeicher

Auf das wäre ich auch selbst gekommen. :-D

Aber im TImage sind unter anderem Instanzen von folgenden Typen deklariert:
  • TCanvas
  • TBitmap oder TGraphic
  • TPicture

Was wird in den einzelen Instanzen gespeichert, oder besser gesagt
was passiert in jedem einzelnen?

Danke

sixarp 8. Dez 2004 17:52

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
*push* :???:

Aenogym 8. Dez 2004 17:59

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
hi,

der "inhalt" des bildes, also quasi das bild selbst, wird in der eigenschaft Delphi-Referenz durchsuchenpixels gespeichert. wie der name schon sagt, sind dass die einzelnen pixel koordinaten, denen ein TColor-wert zugeordnet ist.
wenn du, über den canvas zum beispiel, etwas zeichnest, dann wird das halt vom computer konstruirt und auf den cavas kopiert. dabei nehmen die einzelnen pixel halt andere TColor-werte an.

die gezeichneten objekte (linien zB) werden nicht einzeln gespeichert, sodass du sie für ein komplexes bildbearbeitungs-programm benutzen könntest.

Aenogym

sixarp 8. Dez 2004 18:19

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
Danke dass du mein Wissen aufgefrischt hast,

aber das ist leider nicht die Antwort auf mein Frage!

:-D

Danke

Robert Marquardt 8. Dez 2004 19:02

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
Ein TImage enthaelt ein Picture: TPicture.
Selbige wiederum enthalt Graphic: TGraphic und Bitmap: TBitmap.
Diese beiden sind verschraenkt. Graphic kann verschiedene Formate enthalten waehrend Bitmap
die Windows Bitmap dazu enthaelt.
Image.Picture.Bitmap ist also die Gegend in der das Bild enthalten ist.
In der TBitmap ist das Bild letztlich als HBITMAP enthalten. Selbiger Handle ist
nichts weiter als ein Speicherbereich bischen Header und den Zeilen mit den Pixeln.
Image und Bitmap haben verschraenkte Canvas'e. Malt man auf die Bitmap so malt man auch aufs Image.

dizzy 8. Dez 2004 20:53

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
Zitat:

Zitat von Robert Marquardt
Malt man auf die Bitmap so malt man auch aufs Image.

Imho gilt das allerdings nicht umgekeht, oder?
Mit dem (oder besser "durch das") Bitmap.Canvas zeichnet man auf das Bitmap, welches vom Image natürlich mit dem neu gezeichneten angezeigt wird. Ein Image hat aber noch selbst einen Canvas (Image.Canvas), auf den man natürlich auch malen kann, was sich aber nicht auf das enthaltene Bitmap auswirken dürfte, oder!? :gruebel:

Robert Marquardt 9. Dez 2004 05:50

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
Image und seine Bitmap sind verschraenkt. Das Image hat das OnChange der Bitmap auf eine eigene Methode gesetzt und
bemerkt daher die Aenderungen. Umgekehrt geht es auch. Wahrscheinlich lenkt das Image die Schreiboperationen auf die Bitmap um.
Icvh muss mir das nochmal genauer anschauen.

teebee 9. Dez 2004 15:33

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
Zitat:

Zitat von Robert Marquardt
Wahrscheinlich lenkt das Image die Schreiboperationen auf die Bitmap um.

Richtig, TImage.GetCanvas liefert den Canvas der enthaltenen Bitmap zurück bzw. erzeugt das Bitmap, wenn noch nicht vorhanden. D.h. alle Operationen auf Image.Canvas beziehen sich auf den Canvas der Bitmap. Achtung: es knallt, wenn schon ein anderer Grafiktyp im Image ist, dann muss man über dessen Canvas gehen.

Gruß, teebee

Robert Marquardt 9. Dez 2004 16:04

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
Ich wollte mal ein TImage schreiben das die Bitmap gekachelt anzeigt und das fliegt einem um die Ohren,
da man ja wenn man aufs TImage malt, genau in die Bitmap malt die man kacheln will.
Man kann es aber trotzdem hinkriegen.

dizzy 9. Dez 2004 16:05

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
:shock: Is ja nen Dingen! Wieder was dazu gelernt :)
Aber praktisch finde ich das irgendwie nicht. Für einen "Anfänger" sicherlich nachvollziehbarer, aber ich hätte jetzt echt erwartet, dass das Image.Canvas auf das Control selbst bezogen ist (wie bei allen anderen Controls ja auch), und dass das Zeichnen durch Bitmap.Canvas im Image sichtbar wird ist ja klar, weil es das Bitmap ja anzeigt :)
D.h. wenn ich auf ein Image.Canvas zeichne, muss ich das nicht OnPaint aktualisieren, da es ja an das Bitmap "durchgereicht" wird, und dieses wird ohnehin OnPaint neugezeichnet, gell!? Hmmm... weicht mir zu sehr vom Standardverhalten von Controls (bzw, deren Canvases) ab :?
Hätt ich anders gemacht :mrgreen:

Tüssken,
Fabian

teebee 9. Dez 2004 17:15

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
Prinzipiell ist ein TImage ja auch gar nicht zum Zeichnen gedacht, sondern zum Anzeigen von fertigen Bildern. Zum Zeichnen nimmt man ja eigentlich eine TPaintBox. Wenn man schon auf ein Image malen möchte, sollte man halt immmer über das Picture gehen, dann kann auch nix schiefgehen.

Gruß, teebee

dizzy 9. Dez 2004 21:04

Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
 
Ich mache das, bzw. setze ich eigentlich immer ein Offscreen-Bitmap ein. Aber gerade Neulinge, so wie ich auch am Anfang, malen ja sehr gerne auf einem Image rum. Und dadurch dass es damit dann geht, sind viele (ich auch zuerst) sehr verwundert, weil es bei anderen Kompos auf einmal nicht mehr so geht. Ein zu weiches Kissen imho. Man wird dadurch ja geradezu verdorben :D :stupid:

Aber watt soll's - ist ja nun wirklich fast eine Belanglosigkeit.

Ciao,
Fabian


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