![]() |
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 |
Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
*bush* :o
|
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.
|
Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
Zitat:
Also im Arbeitsspeicher |
Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
Zitat:
Aber im TImage sind unter anderem Instanzen von folgenden Typen deklariert:
Was wird in den einzelen Instanzen gespeichert, oder besser gesagt was passiert in jedem einzelnen? Danke |
Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
*push* :???:
|
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 ![]() 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 |
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 |
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. |
Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
Zitat:
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: |
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. |
Re: Wo wird der Inhalt in der Instanz von TImage gespeichert
Zitat:
Gruß, teebee |
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. |
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 |
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 |
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 05:22 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-2025 by Thomas Breitkreuz