首页 > 代码库 > delphi xe6 firemonkey关于canvas的bug

delphi xe6 firemonkey关于canvas的bug

最近在使用xe6开发MockPlus2.0桌面端,使用的firemonkey框架,组件里面的Canvas真是折腾人。

情景还原:

工作区拉伸组件时在上面需要绘制当前组件的大小参数,想要的效果是下图,在淡蓝色选择框上面有半透明黑色背景中显示的此时选择框的高宽


可是,事与愿违,在更改了组件文字style以后(此处是加了删除线、下划线),出现了以下奇怪问题:


显示组件高宽的文字居然也有了删除线和下划线,实现的关键代码就两句话:

Canvas.Fill.Color := $FFFFFFFF;
Canvas.FillText(LabelRect, LabelStr, False, 1, [], TTextAlign.Center);

这个Canvas是属于上面淡蓝色选择框对象的,与下面的组件(Tooltip)毫无关系。

这也太奇怪了吧,然后试了试这样处理,在绘制之前先去掉这个Canvas的style,即:


Canvas.Font.Style := [];
Canvas.Fill.Color := $FFFFFFFF;
Canvas.FillText(LabelRect, LabelStr, False, 1, [], TTextAlign.Center);

这样做的结果就是,文字正常了,得到了想要的效果。

有点怀疑这个firemonkey里面的Canvas是全局共享的(如果不是则是xe6的一个bug)。

delphi xe6 firemonkey关于canvas的bug