由于需要得到背景区域的Canvas,需要用到GetParentImage函数,所以需要引用SPUtils单元。
下面是代码:
procedure TfrmLogin.btnClosePaint(Sender: TObject; Cnvs: TCanvas; R: TRect;
ADown, AMouseIn: Boolean; var DrawDefault: Boolean);
var
pic:TPicture;
begin
try
try
pic:=TPicture.Create;
if (AMouseIn) or (ADown) then
pic.LoadFromFile(Format('%s\res\data\images\head-close__hover.png',[AppPath]))
else
pic.LoadFromFile(Format('%s\res\data\images\head-close.png',[AppPath]));
GetParentImage(Self.btnClose,Cnvs);
Cnvs.Draw(0,0,pic.Graphic);
DrawDefault:=False;
except on E: Exception do
begin
LogError('btnClosePaint Error:'+E.Message);
end;
end;
finally
if Assigned(pic) then
pic.Destroy;
end;
end;
其中图片是预先放好的,可以动态加载想要的png。