Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#7

AW: TImage und Bitmap

  Alt 11. Okt 2023, 23:55
Ohh, mir war so, als konnte man auch selbst auf's Canvas des TImage malen, also quasi nur virtuell über das Bitmap/Graphic drüber und nicht rein. (ohne böse Casts, um an das "richtige" Canvas zu kommen)

Aber nee, mindestens schon seit D6 ist das so
(kann's oben nicht mehr durchstreichen)



So,
Image.Canvas greift nur auf Image.Picture.Bitmap.Canvas zu.
Ist kein TBitmap enthalten, dann wird Eines erstellt.
Ist etwas Anderes drin, wie z.B. ein Icon/Gif/Png/Jpeg/usw., dann knallt es.

Zugriff auf Image.Picture.Bitmap sorgt immer dafür, dass ein TBitmap drin steckt.
Ist was Anderes drin, dann wird es still und heimlich gelöscht und durch ein leeres TBitmap ersetzt.
Selbes gilt auch für für Image.Picture.Icon, Image.Picture.Metafile oder Image.Picture.WICImage, wobei dort natürlich TIcon, TMetafile oder TWICImage entstehen.

Zugriff auf Image.Picture.Graphic ist somit das Einzig sichere, was immer ein Canvas liefert (außer man weiß ganz genau, dass definitiv und für immer und ewig genau der gewünschte Graphic-Typ drin steckt),
also Image.Picture.Graphic.Canvas,
aber Image.Canvas macht zumindestens nichst kaputt, also ist was anderes als TBitmap drin, dann knallt es nur, aber das Bild bleibt erhalten.



Wäre Image.Canvas wirklich das Canvas der Oberfläche und nicht das des internen Bitmap, dann würde man nur oben drauf malen
und beim nächsten Refresh wäre alles weg gewesen. (durch den DesktopWindowManager, seit WinXP, halten "einfache" Canvas aber etwas länger)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (12. Okt 2023 um 00:00 Uhr)
  Mit Zitat antworten Zitat