Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Glyph bei Buttons ist TBitmap, ich brauche TPicture (https://www.delphipraxis.net/34218-glyph-bei-buttons-ist-tbitmap-ich-brauche-tpicture.html)

MaBuSE 19. Nov 2004 12:13


Glyph bei Buttons ist TBitmap, ich brauche TPicture
 
Einer TImage Komponente kann man ja über die Eigenschaft Picture vom Typ TPicture ein Bild zuweisen.
Es gibt die Möglichkeit nicht unterstützte Dateitypen zu implementieren.
Delphi-Quellcode:
    TPicture.RegisterFileFormat('PNG', 'Portable Network Graphics', TPNGObject);
Damit kann dann die TImage Komponente (und alle Komponenten die TPicture verwenden) auch diese Grafikformate verarbeiten.

Bei einem TBitBtn, TSpeedButton, ... ist die Eigenschaft Glyph vorhanden.
Mit dieser Eigenschaft kann dem Button ein Bild zugewiesen werden.

Dummerweise ist Glyph vom Typ TBitmap.
Delphi-Quellcode:
  TBitBtn = class(TButton)
    ...
    property Glyph: TBitmap read GetGlyph write SetGlyph stored IsCustom;
    ...
Die TImage Komponente verwendet ein TPicture.
Delphi-Quellcode:
  TImage = class(TGraphicControl)
    ...
    property Picture: TPicture read FPicture write SetPicture;
    ...
Da ich aber *.png Grafiken mit Alpha Blending verwenden möchte um die Icons unabhängig von dem gewähltem Skin (XP Theme) darzustellen, brauche ich Buttons, die mit TPicture arbeiten.

Kann mir jemand solch eine Button Komponente empfehlen?

Ich habe schon nach Komponenten gesucht, aber noch keine Vernünftige gefunden.
Die Komponente sollte sich auch dem XP Theme anpassen (XP Manifest)

Danke

[edit]eigentliche Frage Fett gemacht[/edit]

jim_raynor 19. Nov 2004 13:01

Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
 
Versuche es mal mit Assign. Also

BitBtn.Bitmap.Assign(Picture) oder so ähnlich. Vielleicht klappts.

[edit]Ach vergiss, sehe gerade, dass du was ganz anderes möchtest :wall: [/edit]

Orbmu2k 22. Feb 2005 15:53

Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
 
*push*

stehe grade vor dem selben Problem ...

Hast du mittlerweile eine geeignete Komponente gefunden ?

MaBuSE 22. Feb 2005 16:02

Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
 
Zitat:

Zitat von Orbmu2k
stehe grade vor dem selben Problem ...
Hast du mittlerweile eine geeignete Komponente gefunden ?

Nein, ich habe mir die *.png Dateien mit einem Konverter nach *.bmp konvertiert (Hintergrund clSilver und lila Transparenz-Maske) und die Bmps den Buttons zugewiesen. (Hoffentlich ändert kein Benutzer das Farbschema :roll: )

Aber: Die Firma Developer Express Inc wird das in eine der nächsten Versionen Ihrer Komponenten einbauen ;-) ( http://www.devexpress.com )

Zitat:

QUESTION: Why is TcxButton.Glyph only TBitmap and not TPicture?
Expert: Developer Express
IDE version: D5 D7
Platform: WinXP

Hello,
I'm working with QuantumGrid 3 and 4.

Why is TcxButton.Glyph only TBitmap
and not TPicture?

I can only load *.bmp files.

How can i load *.png files with
alpha blending as glyph?

In TImage.Picture.LoadFromFile ist works fine.
(I'm using http://pngdelphi.sourceforge.net/)

kind regards
Dr. MaBuSE

ANSWER:
Hi,

Actually, it is standard for VCL controls to have the Glyph property of the TBitmap type. However, we have added your request to our wish list and the type of the Glyph property will probably be changed in a future version of the ExpressEditors.

Thanks.

Orbmu2k 22. Feb 2005 16:05

Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
 
Die sind aber glaube nur gegen Geld zu haben ... :(

Muss man sich wohl doch selbst an die Arbeit stürzen :(

MaBuSE 22. Feb 2005 16:08

Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
 
Zitat:

Zitat von Orbmu2k
Die sind aber glaube nur gegen Geld zu haben ... :(
Muss man sich wohl doch selbst an die Arbeit stürzen :(

Ja, kosten Geld, sind aber auch wirklich gut.

Robert Marquardt 22. Feb 2005 16:33

Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
 
Ich glaube bei der JediVCL sind auch Buttons mit TPicture Glyph dabei.
Ansonsten hilft natuerlich ein Glyph.Assign(SeparatePicture.Graphic.Bitmap);
Dafuer ist naemlich Graphic.Bitmap da. Windows kann nur Bitmaps anzeigen,
daher muss Picture immer eine Bitmap-Version vorhalten.

MaBuSE 22. Feb 2005 16:36

Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
 
Zitat:

Zitat von Robert Marquardt
Ansonsten hilft natuerlich ein Glyph.Assign(SeparatePicture.Graphic.Bitmap);
Dafuer ist naemlich Graphic.Bitmap da. Windows kann nur Bitmaps anzeigen,
daher muss Picture immer eine Bitmap-Version vorhalten.

Damit funktioniert aber der Alpha Chanel der PNGs nicht !!!
(Das war das erste was ich probiert habe)

Robert Marquardt 22. Feb 2005 16:44

Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
 
Dann ist die Transparent-Implementation fuer PNG eben schlecht. Pech gehabt.
Alternativ rangehen und reparieren. Das duerfte ja OpenSource sein.

MaBuSE 22. Feb 2005 16:52

Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
 
Zitat:

Zitat von Robert Marquardt
Dann ist die Transparent-Implementation fuer PNG eben schlecht. Pech gehabt.Alternativ rangehen und reparieren. Das duerfte ja OpenSource sein.

TBitmap macht Transparenz in dem die Farbe des linken oberen Pixels als Transparent-Farbe definiert.
Bei *.png Dateien kann man transparente Abstufungen in 256 Stufen machen. (8Bit)

Da der BitBtn leider nicht das Canvas auf dem er das Glyph zeichnet an das zu zuweisende Picture weitergibt, kann das picture in der TPicture.Bitmap auch nicht den Hintergrund des Buttons wissen und somit auch keine echte Transparenz umsetzen. Abhängig vom Skin ist es aber auch nicht leicht das "untenliegende" Canvas des Glyphs zu ermitteln um dann selbst was zu basteln.

In Internet findet sich diese Frage relativ häuftig, aber es gibt nirgends eine Lösung.
-> Scheint also nicht ganz so einfach zu sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 Uhr.
Seite 1 von 2  1 2      

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