Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 如何替代图形TBitBtn图示符?_Delphi_Drawing_Delphi Xe7 - Fatal编程技术网

Delphi 如何替代图形TBitBtn图示符?

Delphi 如何替代图形TBitBtn图示符?,delphi,drawing,delphi-xe7,Delphi,Drawing,Delphi Xe7,在编写从TBitBtn继承的自定义控件时,我正在寻找一种方法来覆盖或截取图示符的绘制,并自己绘制图示符,而不必重新绘制整个控件。我广泛使用VCL样式,并希望避免重新创建所有绘图和样式挂钩等。不幸的是,我在TBitBtn中找不到任何允许这样做的内容 我如何截取TBitBtn.Glyph的绘制,并在保留控件的所有自然样式绘制的同时,自己将Glyph绘制到按钮画布上?控件使用TButtonGlyph类绘制Glyph,不幸的是,没有与绘制相关的任何方法(TButtonGlyph.DrawButtonGl

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

我如何截取
TBitBtn.Glyph
的绘制,并在保留控件的所有自然样式绘制的同时,自己将Glyph绘制到按钮画布上?

控件使用
TButtonGlyph
类绘制Glyph,不幸的是,没有与绘制相关的任何方法(
TButtonGlyph.DrawButtonGlyph
TButtonGlyph.Draw
)被标记为虚拟。因此,为了只改变字形的绘制方式,您可以绕道修补
TButtonGlyph.DrawButtonGlyph
ButtonGlyph.Draw
过程。

我将“重新介绍”一个新的
Glyph
属性,并重写实际调用
DrawItem
CNDrawItem
。继承
CNDrawItem
后,绘制自己的
Glyph