Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
Delphi XE5 Professional
|
Re: SpeedButton: falsche Darstellung eines Bitmaps
4. Mär 2009, 08:25
Zitat von Helmi:
Wieso seh ich nicht das komplette Bitmap und wie kann ich das richtig anzeigen lassen?
Liegt wohl daran, dass Du nicht die klassische Oberfläche von Windows verwendest. Das Icon wird mit dieser procedure gezeichnet:
Delphi-Quellcode:
procedure TButtonGlyph.DrawButtonGlyph(Canvas: TCanvas; const GlyphPos: TPoint;
State: TButtonState; Transparent: Boolean);
var
Index: Integer;
Details: TThemedElementDetails;
R: TRect;
Button: TThemedButton;
begin
if FOriginal = nil then Exit;
if (FOriginal.Width = 0) or (FOriginal.Height = 0) then Exit;
Index := CreateButtonGlyph(State);
with GlyphPos do
begin
if ThemeServices.ThemesEnabled then
begin
R.TopLeft := GlyphPos;
R.Right := R.Left + FOriginal.Width div FNumGlyphs;
R.Bottom := R.Top + FOriginal.Height;
case State of
bsDisabled:
Button := tbPushButtonDisabled;
bsDown,
bsExclusive:
Button := tbPushButtonPressed;
else
// bsUp
Button := tbPushButtonNormal;
end;
Details := ThemeServices.GetElementDetails(Button);
ThemeServices.DrawIcon(Canvas.Handle, Details, R, FGlyphList.Handle, Index);
end
else
if Transparent or (State = bsExclusive) then
begin
ImageList_DrawEx(FGlyphList.Handle, Index, Canvas.Handle, X, Y, 0, 0,
clNone, clNone, ILD_Transparent)
end
else
ImageList_DrawEx(FGlyphList.Handle, Index, Canvas.Handle, X, Y, 0, 0,
ColorToRGB(clBtnFace), clNone, ILD_Normal);
end;
end;
Ist ThemeServices.ThemesEnabled wird die Eigenschaft Transparent nicht ausgewertet.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
|
|
Zitat
|