Delphi 从样式字体绘制背景
我正在尝试从TSeStyleFont绘制vcl样式的背景,就像在位图样式设计器中一样。。 有没有办法画出背景 我试了一下: -使用抽屉元素在位图中首先绘制对象。 -而不是使用“bitmap.Canvas.CopyRect”将当前位图复制到另一个干净的位图。问题是:此方法无法正确处理具有标志符号的对象,例如复选框Delphi 从样式字体绘制背景,delphi,delphi-xe2,vcl-styles,Delphi,Delphi Xe2,Vcl Styles,我正在尝试从TSeStyleFont绘制vcl样式的背景,就像在位图样式设计器中一样。。 有没有办法画出背景 我试了一下: -使用抽屉元素在位图中首先绘制对象。 -而不是使用“bitmap.Canvas.CopyRect”将当前位图复制到另一个干净的位图。问题是:此方法无法正确处理具有标志符号的对象,例如复选框 var bmp, bmp2: TBitmap; Details: TThemedElementDetails; R, Rn: TRect; begin bmp :=
var
bmp, bmp2: TBitmap;
Details: TThemedElementDetails;
R, Rn: TRect;
begin
bmp := TBitmap.Create;
bmp2 := TBitmap.Create;
R := Rect(0, 0, 120, 20);
Rn := Rect(0 + 4, 0 + 4, 120 - 4, 20 - 4);
bmp.SetSize(120, 20);
bmp2.SetSize(120, 20);
Details := StyleServices.GetElementDetails(TThemedButton.tbPushButtonHot);
StyleServices.DrawElement(bmp.Canvas.Handle, Details, R);
bmp2.Canvas.CopyRect(R, bmp.Canvas, Rn);
Canvas.Draw(10, 10, bmp2);
bmp.Free;
bmp2.Free;
end;
如果你想画按钮的背景,你必须使用通过适当部分的方法 试试这个样品
uses
Vcl.Styles,
Vcl.Themes;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
Details : TThemedElementDetails;
begin
Details := StyleServices.GetElementDetails(tbPushButtonPressed);
StyleServices.DrawElement(PaintBox1.Canvas.Handle, Details, PaintBox1.ClientRect);
Details := StyleServices.GetElementDetails(tbPushButtonNormal);
StyleServices.DrawElement(PaintBox2.Canvas.Handle, Details, PaintBox2.ClientRect);
end;
如果要绘制没有角的背景,可以像这样调整树的边界
如果你想画按钮的背景,你必须使用通过适当部分的方法 试试这个样品
uses
Vcl.Styles,
Vcl.Themes;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
Details : TThemedElementDetails;
begin
Details := StyleServices.GetElementDetails(tbPushButtonPressed);
StyleServices.DrawElement(PaintBox1.Canvas.Handle, Details, PaintBox1.ClientRect);
Details := StyleServices.GetElementDetails(tbPushButtonNormal);
StyleServices.DrawElement(PaintBox2.Canvas.Handle, Details, PaintBox2.ClientRect);
end;
如果要绘制没有角的背景,可以像这样调整树的边界
你想画按钮的背景吗?这个问题充其量是令人困惑的,请重新表述问题>你想画按钮的背景吗?是这样的。事实上,我已经做了一个尝试:-首先在位图中使用抽屉元素绘制对象。-而不是使用“bitmap.Canvas.CopyRect”将当前位图复制到另一个干净的位图。问题是:此方法无法正确处理具有诸如CheckBox之类标志符号的对象…是否要绘制按钮的背景?此问题充其量令人困惑,请重新表述问题>是否要绘制按钮的背景?是这样的。事实上,我已经做了一个尝试:-首先在位图中使用抽屉元素绘制对象。-而不是使用“bitmap.Canvas.CopyRect”将当前位图复制到另一个干净的位图。问题是:此方法无法正确处理具有诸如CheckBox…等标志符号的对象。与答案示例有何区别?背景是一个没有角的完整矩形。与答案示例有何区别回答?背景是一个没有角的完整矩形