我正在用Delphi6创建我自己的组件,组件工作得很好,除了画图部分,我的画图部分是这样开始的
inherited Paint;
if (csdesigning in ComponentState) then
begin因此,当组件在运行时创建时,它永远不会被绘制,但如果我删除这一行,它似乎会一直被重新绘制
有没有办法我可以移动(画图)代码,使它只被调用,例如。无效
任何人都将不胜感激,在此之前,我要感谢你
发布于 2013-11-03 11:54:06
每当组件出于任何原因需要重新绘制自身时,都会调用Paint()。例如,如果将另一个窗口移动到您的组件上,然后将其移开。Invalidate()仅仅是一个手动请求来触发重新绘制。您不应该试图限制何时调用Paint(),这不是您的责任。每当请求绘制时,您的职责就是绘制组件。
也就是说,只有在实际需要重新绘制时才应该调用Paint()。如果您的Paint()被过多地调用,那么您做错了什么。要么是您的Paint()代码正在做一些不应该做的事情,要么是您的Paint()外部的代码过于频繁地调用Invalidate()/Refresh()。很难确定,因为您没有显示任何实际代码。
https://stackoverflow.com/questions/19749132
复制相似问题