【发布时间】:2013-05-09 19:52:00
【问题描述】:
我正在尝试从 TSeStyleFont 绘制 vcl 样式背景,就像在位图样式设计器中一样。 有什么方法可以画背景吗?
我试了一下: - 首先使用 DrawElement 在位图中绘制对象。 - 比使用 'Bitmap.Canvas.CopyRect' 将当前位图复制到另一个干净的位图,问题在于:此方法不适用于具有 Glyph 的对象,例如 CheckBox ...
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;
【问题讨论】:
-
是否要绘制按钮的背景?
-
这个问题充其量是令人困惑的,请改写问题
-
> 是否要绘制按钮的背景?是的,像这样。事实上,我已经尝试过: - 首先使用 DrawElement 在位图中绘制对象。 - 比使用 'Bitmap.Canvas.CopyRect' 将当前位图复制到另一个干净的位图,问题在于:此方法不适用于具有 Glyph 的对象,例如 CheckBox ...
标签: delphi delphi-xe2 vcl-styles