Delphi-PRAXiS

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.

Orbmu2k 22. Feb 2005 20:26

Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

-> Scheint also nicht ganz so einfach zu sein.
Hab das Mal auf die einfachste Art versucht umzusetzen ....

Ist zwar unschön aber funktioniert grundsätzlich was die Hauptsache ist ...

MaBuSE 23. Feb 2005 08:00

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

Zitat von Robert Marquardt
Ich glaube bei der JediVCL sind auch Buttons mit TPicture Glyph dabei.

Ich habe mir nun die JCL und die JVCL in einer VMWare installiert.
-> Ich habe mich durch die >300 Komponenten durchgewühlt, aber kein Button mit TPicture vorhanden.
(Sind zwar fast 20 Buttons, aber das Glyph ist immer TBitmap oder der Button arbeitet mit einer TImageList, die aber wiederum dur TBitmaps beinhalten darf :-( )

Karbrüggen 27. Mär 2005 17:41

Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
 
Ich möchte mich hier nicht als Voll-Noob präsentieren, aber ich hab da glaube ich nen Ansatz:

- TPanels als Buttons einsetzen:
- Eigenschaften:
-- Alignment: taLeftJustify
-- Color: indiv./ clBtnFace
-- Caption := [n Spaces] + Caption
- Diese Funktionen deklarieren:
Delphi-Quellcode:
procedure BtnUp(Panel: TPanel);
begin
  Panel.BevelOuter := bvLowered;
  Panel.BevelInner := bvRaised;
end;

procedure BtnDown(Panel: TPanel);
begin
  Panel.BevelOuter := bvRaised;
  Panel.BevelInner := bvLowered;
end;
- dazu passend MouseDown- und MouseUp-Prozeduren deklarieren
- letztendlich ein TImage auf das Panel ziehen, und zur Laufzeit dort die Bilder hineinladen.

Wenn ich jetzt noch wüsste, wie man (ich) Komponenten erstellen kann wär die Welt perfekt *fg*

mfg

Orbmu2k 27. Mär 2005 22:22

Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
 
Der Wunsch ging eindeutig in richtung "mit XP Style" ...

Habe das Problem ist auch schon gelöst ... bei Interesse PN an mich!


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 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