AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TImage und Bitmap

Ein Thema von juelin · begonnen am 5. Okt 2023 · letzter Beitrag vom 11. Okt 2023
Antwort Antwort
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.487 Beiträge
 
Delphi 12 Athens
 
#1

AW: TImage und Bitmap

  Alt 9. Okt 2023, 10:48
Zugriffe auf Image1.Canvas werden automatisch umgeleitet auf Image1.Picture.Bitmap.Canvas .
Man zeichnet im Gegensatz zur Paintbox nicht direkt auf den Bildschirm.
Die Grafik wird in Reaktion auf die Nachricht WM_PAINT vom Image auf den Bildschirm kopiert.

Enthält das Picture beim Zugriff auf das Property "Bitmap" keine Bitmap sondern eine anderes Grafikformat:
- ein neues Bitmap in der Größe der Grafik wird erstellt
- die Grafik auf die Bitmap gezeichnet
- die Bitmap ersetzt die Grafik
Ist keine Grafik vorhanden, muss der Bitmap zumindest die Größe der Zeichenfläche zugewiesen werden, sonst kann man nicht zeichnen.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.119 Beiträge
 
Delphi 2009 Professional
 
#2

AW: TImage und Bitmap

  Alt 11. Okt 2023, 18:06
Ist keine Grafik vorhanden, muss der Bitmap zumindest die Größe der Zeichenfläche zugewiesen werden, sonst kann man nicht zeichnen.
Greift man ohne Bild auf TImage.Canvas (statt TImage.Picture.Bitmap.Canvas) zu, wird eine weiße Bitmap von der aktuellen Größe von TImage angelegt.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TImage und Bitmap

  Alt 11. Okt 2023, 22: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)
Ein Therapeut entspricht 1024 Gigapeut.

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

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 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