首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组件应该只绘制一次

组件应该只绘制一次
EN

Stack Overflow用户
提问于 2013-11-03 10:07:44
回答 1查看 214关注 0票数 0

我正在用Delphi6创建我自己的组件,组件工作得很好,除了画图部分,我的画图部分是这样开始的

代码语言:javascript
复制
inherited Paint;
if (csdesigning in ComponentState) then
begin

因此,当组件在运行时创建时,它永远不会被绘制,但如果我删除这一行,它似乎会一直被重新绘制

有没有办法我可以移动(画图)代码,使它只被调用,例如。无效

任何人都将不胜感激,在此之前,我要感谢你

EN

回答 1

Stack Overflow用户

发布于 2013-11-03 11:54:06

每当组件出于任何原因需要重新绘制自身时,都会调用Paint()。例如,如果将另一个窗口移动到您的组件上,然后将其移开。Invalidate()仅仅是一个手动请求来触发重新绘制。您不应该试图限制何时调用Paint(),这不是您的责任。每当请求绘制时,您的职责就是绘制组件。

也就是说,只有在实际需要重新绘制时才应该调用Paint()。如果您的Paint()被过多地调用,那么您做错了什么。要么是您的Paint()代码正在做一些不应该做的事情,要么是您的Paint()外部的代码过于频繁地调用Invalidate()/Refresh()。很难确定,因为您没有显示任何实际代码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19749132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档