Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 从样式字体绘制背景_Delphi_Delphi Xe2_Vcl Styles - Fatal编程技术网

Delphi 从样式字体绘制背景

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 :=

我正在尝试从TSeStyleFont绘制vcl样式的背景,就像在位图样式设计器中一样。。 有没有办法画出背景

我试了一下: -使用抽屉元素在位图中首先绘制对象。 -而不是使用“bitmap.Canvas.CopyRect”将当前位图复制到另一个干净的位图。问题是:此方法无法正确处理具有标志符号的对象,例如复选框

  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…等标志符号的对象。与答案示例有何区别?背景是一个没有角的完整矩形。与答案示例有何区别回答?背景是一个没有角的完整矩形