如何覆盖绘制 TBitBtn 字形?

How to override drawing TBitBtn Glyph?

在编写继承自 TBitBtn 的自定义控件时,我正在寻找一种方法来覆盖或拦截仅绘制字形并自己绘制字形,而不必重绘整个控件.我广泛使用 VCL 样式,并希望避免重新创建所有绘图和样式挂钩等。不幸的是,我在 TBitBtn 中找不到任何允许这样做的东西。

如何截取 TBitBtn.Glyph 的绘图并将字形绘制到按钮 canvas 上,同时保留控件的所有自然样式绘图?

TBitBtn控件使用TButtonGlyphclass绘制字形,不幸的是none绘制相关方法(TButtonGlyph.DrawButtonGlyph,TButtonGlyph.Draw) 被标记为虚拟。 因此,为了仅更改绘制字形的方式,您可以绕道修补 TButtonGlyph.DrawButtonGlyphButtonGlyph.Draw 过程。