![]() |
Bitmap nach Assign leer. Warum?
Hallo zusammen,
ich weise die Bitmap eines TImage einer anderen Bitmap zu und dann wieder zurück:
Delphi-Quellcode:
Danach ist das Image leer.
procedure TForm26.Button1Click(Sender: TObject);
var BmpTmp: TBitmap; begin BmpTmp := TBitmap.Create; BmpTmp.Assign(Image1.Picture.Bitmap); Image1.Picture.Bitmap.Assign(BmpTmp); BmpTmp.Free; end; Warum? Was mache ich falsch? Danke & Gruß Freejay |
AW: Bitmap nach Assign leer. Warum?
Zitat:
Ist Image1.Picture vorher schon eine Bitmap? Wenn nein, wird das nicht funktionieren. Es gibt keine automatische Konvertierung bei der Zuweisung. |
AW: Bitmap nach Assign leer. Warum?
Das verstehe ich nicht. Ich nutze doch Image1.Picture.Bitmap und nicht bloß Image1.Picture.
Ist denn Image1.Picture.Bitmap nicht automatisch gefüllt? Wenn nein: Wie mache ich das? |
AW: Bitmap nach Assign leer. Warum?
Benutz einfach BmpTmp.Assign(Image1.Picture.Graphic). Graphic ist immer gefüllt und egal welches Bildformat geladen ist, die Konvertierung zu BMP sollte ohne Probleme funktionieren.
Image1.Picture.Bitmap ist wirklich nur gefüllt wenns ein Bitmap ist. Picture.Graphic ist quasi die Verallgemeinerung und ist immer gefüllt wenn ein Bild geladen ist. |
AW: Bitmap nach Assign leer. Warum?
Zitat:
Alle anderen Typbasierenden-Property haben einen Cast drin und da wird bei Aufruf vorher auch der Typ angepasst. Ist also kein "Bitmap" im Image.Picture geladen, dann wird beim Zugriff auf .Bitmap auch ein TBitmap erstellt und in .Graphic ausgetauscht, aber ohne den Bildinhalt zu kpieren. .Bitmap ist ein weicher Cast auf .Graphic und somit könnte man sagen es ist immer gefüllt ... nur nicht immer richtig.
Delphi-Quellcode:
function TPicture.GetBitmap: TBitmap;
begin ForceType(TBitmap); Result := TBitmap(Graphic); end; procedure TPicture.ForceType(GraphicType: TGraphicClass); begin ... FGraphic.Free; FGraphic := GraphicType.Create; ... end; |
AW: Bitmap nach Assign leer. Warum?
Hi zusammen
Zitat:
Zitat:
Am Ende hab ich dann doch noch deinen Schlussatz gesehen: Zitat:
Delphi-Quellcode:
Wenn der Ausdruck False ist (if Not, also False, ist nicht der Fall) ist eine Grafik im Bitmapformat vorhanden. Andernfalls ist keine Bitmap vorhanden, aber eventuell eine Metagraphik.
if not (Image1.Picture.Bitmap = NIL) then
begin // hier etwas mit der Bitmap anstellen. end; Du kannst aber bei TPicture auch eigene Grafikformate regisrieren:
Delphi-Quellcode:
TPicture.RegisterFileFormat('NEF','NEF Format',TWICImage);
TPicture.RegisterFileFormat('TIFF','TIFF Format',TTiffGraphic); Alle Klarheiten beseitigt? :) Gruss Delbor |
AW: Bitmap nach Assign leer. Warum?
Mein lieber Herr Gesangsverein! Da hab' ich ja wieder mal ordentlich was gelernt. Trotz über 20 Jahren Delphi bin ich im Bereich Grafik nämlich ziemlich blank...
Danke an alle! |
AW: Bitmap nach Assign leer. Warum?
Zitat:
Übrigens genau das passiert im Originalcode. In der Zeile
Delphi-Quellcode:
wird ein eventuell vorhandenes (non-Bitmap-)Image gelöscht und eine leere TBitmap zurückgegeben.
BmpTmp.Assign(Image1.Picture.Bitmap);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 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