, Glyph
TSpeedButton
, , , .
TSpeedButton
FGlyph
TObject
, , TButtonGlyph
.
TSpeedButton
FGlyph := TButtonGlyph.Create;
Glyph
TSpeedButton
:
function TSpeedButton.GetGlyph: TBitmap;
begin
Result := TButtonGlyph(FGlyph).Glyph;
end;
procedure TSpeedButton.SetGlyph(Value: TBitmap);
begin
TButtonGlyph(FGlyph).Glyph := Value;
Invalidate;
end;
, TSpeedButton
Glyph
Glyph
TButtonGlyph
, , Vcl.Buttons
, , , TBitMap
property Glyph: TBitmap read FOriginal write SetGlyph;
, TButtonGlyph
TBitMap
"", :
procedure TButtonGlyph.SetGlyph(Value: TBitmap);
var
Glyphs: Integer;
begin
Invalidate;
FOriginal.Assign(Value);
if (Value <> nil) and (Value.Height > 0) then
begin
FTransparentColor := Value.TransparentColor;
if Value.Width mod Value.Height = 0 then
begin
Glyphs := Value.Width div Value.Height;
if Glyphs > 4 then Glyphs := 1;
SetNumGlyphs(Glyphs);
end;
end;
end;
, .PNG:
, - . TButtonGylph
OOP, png, , . , Remy : .
, :
FOriginal.Assign(Value);
, PNG, TPNGImage
AssignTo
, TBitMap
.
Glyph
PNG :
var
APNG: TPngImage;
begin
APNG := TPngImage.Create;
try
APNG.LoadFromFile('C:\Binoculars.png');
SpeedButton1.Glyph.Assign(APNG);
finally
APNG.Free;
end;
- PNG , , - PNG, Andreas Rejbrand :
var
APNG: TPngImage;
ABMP: TBitmap;
begin
APNG := TPngImage.Create;
ABMP := TBitmap.Create;
try
APNG.LoadFromFile('C:\Binoculars.png');
ABMP.SetSize(APNG.Width, APNG.Height);
ABMP.Canvas.Brush.Color := Self.Color;
ABMP.Canvas.FillRect(Rect(0, 0, ABMP.Width, ABMP.Height));
ABMP.Canvas.Draw(0, 0, APNG);
SpeedButton1.Glyph.Assign(APNG);
finally
APNG.Free;
ABMP.Free;
end;
end;