首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OnPaint事件顺序

OnPaint事件顺序
EN

Stack Overflow用户
提问于 2011-05-02 20:05:30
回答 1查看 1.3K关注 0票数 1

我用自己的OnPaint-override开发了一些组件,在那里绘制它们。

我现在添加了一个状态面板,它被设计成与我的部分表单的顶部重叠。我使用阿尔法混合颜色将底层控件灰色化,并在上面显示文本。

不幸的是,我的一些底层自定义控件在状态栏之后绘制自己,因此将自己绘制在状态栏之上。调试时,我发现首先调用了later事件的状态栏,然后调用了底层控件的later事件。

我怎样才能确保正确的订单被用于油漆?

当底层组件自行绘制时,它们前面的组件应该总是自动失效,因此它们会重新绘制自己,但这并不发生。我还在statusbar上调用了SendToFront,但这也没有帮助。因此,我还要问的是,维持订单的适当机制是什么,以及核心组件如何处理这些问题。

编辑:我也在这个问题中运行:每次运行我的OnPaint-event,我的覆盖就变得越来越不透明,因为它一次又一次地用alpha=128-红色绘制。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-02 20:40:12

要消除外部因素(如XP、Vista、Win7之间的变化),您可以:

  • 将“状态面板”图形混合到各自的OnPaint处理程序中的每个控件中,因此您不需要使用半透明的状态窗口来实现所需的显示。
  • 使用一个不透明控件(本质上是状态面板),通过将各个控件的图形组合到其中,将最终图像呈现到其中,这将消除渲染过程将如何运行的任何不确定性。这意味着您必须添加自定义的单击处理,但这通常是一个非常简单的添加--一个简单的方法就是将主“显示控件”放在一组不可见控件(按钮)后面,这样所有的单击处理都可以正常工作,但是绘画是委托给单个控件的。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5861922

复制
相关文章

相似问题

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