例如我需要在界面上放一个刀闸,对应于一个opc server 中的 item,当数据为1的时候是一个形态,当数据为0的时候是另一个形态。你可以考虑用位图表示,但是我建议你自己写个控件,从tgraphiccontrol 开始继承(具体的的实现请参阅delphi书籍)。与使用位图相比,在界面上需要很多这样的刀闸的时候,界面刷新较为平滑与不闪烁。说到控制界面不闪烁,我有两点建议:
1、 考虑把父窗体的doublebuffered打开;
2、 千万小心,如果你的动态控件是从tgraphiccontrol 继承下来的,千万不要和其他的tgraphiccontrol 子控件重合。如果你确实需要放,可以把动态控件放到一个panel上。这句话是什么意思,我们做个试验,界面上放100个label,然后放一个shape,设置为alclient,然后用一个timer 把100个label