【发布时间】:2018-02-16 13:16:53
【问题描述】:
我有这两个功能
procedure GradiantFill(Control: TCustomControlEx; ColorTop, ColorBtm: TColor); overload;
procedure GradiantFill(Control: TForm; ColorTop, ColorBtm: TColor); overload;
这两个函数都需要访问画布,所以为了访问 TPanel 的画布,我声明:
TYPE
TCustomControlEx= class(TCustomControl) { Control that exposes the Canvas property. It can be used to access TPanel's canvas property for example }
public
property Canvas;
end;
我想将这两个函数合并为一个函数,这样我就可以将 TForm 和 TPanel 都传递给它。喜欢:
procedure GradiantFill(Control: TWinControl?; ColorTop, ColorBtm: TColor);
如何在 Delphi 中实现这一点?
问题是 TPanel 和 TForm 的共同祖先是 TWinControl 但它没有 Canvas 属性。
【问题讨论】:
-
真的需要将控件传递到您的渐变填充过程中吗?也许 Bounds、Canvas 和你的两种颜色就足够了?
procedure GradiantFill(const Bounds: TRect; ACanvas: TCanvas; ColorTop, ColorBtm: TColor); -
是的 - 直接通过画布。
标签: delphi canvas delphi-xe7