AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Transparentes PNG in TImage drehen...Wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Transparentes PNG in TImage drehen...Wie?

Offene Frage von "Fabian W."
Ein Thema von torud · begonnen am 24. Nov 2006 · letzter Beitrag vom 26. Okt 2008
Antwort Antwort
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Re: Transparentes PNG in TImage drehen...Wie?

  Alt 8. Dez 2006, 12:48
Zitat von Mavarik:
Ein TImage kann diese Informationen nicht speichern. Nach dem Laden ist der Alpha-Kanal weg. Oder???
Das ist nicht ganz richtig.

TImage kann über die Filter (z.B. pngdelphi) auch mit PNG Dateien umgehen.
Da das TImage ja auch wissen muß wie es gezeichnet wird müssen die Infos ja irgendwo da drin sein

Also:
  • TImage hat eine Eigenschaft Picture
  • TPicture hat eine Eigenschaft Graphic
  • Graphic ist vom Typ TGraphic.
  • ABER je nach dem was das TImage beinhaltet steckt da ein Nachkomme von TGraphic drin, der das Bild und alle Informationen bereithält.
In unserem Fall ein TPNGObject.

In der Delphi Onlinehilfe steht:
Graphic (Eigenschaft von TPicture)
Die Eigenschaft Graphic gibt die im TPicture-Objekt enthaltene Grafik an.
property Graphic: TGraphic; Beschreibung
Mit Graphic legen Sie den Grafiktyp fest, die das TPicture-Objekt enthält. Ein TPicture-Objekt kann Grafiken des Typs Bitmap, Symbol, Metadatei oder benutzerdefinierte Grafikklassen enthalten.


Folgender Code sollte Dein Problem lösen:
(gibt aber Fehler, wenn Im TImage kein Bild geladen ist, das sollte mit Assigned() noch abgefangen werden.)
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var x: TPNGObject;
begin
  // Ist da überhaupt ein PNG drin?
  if Image1.Picture.Graphic is TPngObject then
  begin
    // TPngObject(Image1.Picture.Graphic) ist ein konstanter Ausdruck
    // und kann nicht als Var Parameter übergeben werden, deshalb
    // Der Umweg über x ;-)
    x := Image1.Picture.Graphic as TPngObject;
    SmoothRotate(x, 20);
  end;
end;
Viel Spaß
MaBuSE
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  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 19:51 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