【问题标题】:Creating custom transparent control创建自定义透明控件
【发布时间】:2008-11-29 23:00:08
【问题描述】:

我正在尝试创建一个自定义控件,该控件显示具有每像素 alphablend 的位图(正如你们中的一些人已经知道的其他问题)。

现在我在资源编辑器中使用自定义控件,并将它附加到从 CWnd 派生的类。当我注册我的自定义类时,我将 WNDCLASS 结构的 hbrBackground 设置为 NULL_BRUSH 以实现控件的透明度。

在控件的 OnPaint 中,我使用 AlphaBlend 绘制每像素 alpha 混合位图。

这很好用,但我有两个问题:

  • 我想在鼠标悬停在控件上时更改显示的位图。由于控件是透明的,因此一个位图未与另一位图重叠的区域不会被擦除。图片更改后如何擦除背景?

  • 第二个问题与两个重叠控件有关。我的控件被绘制在具有渐变的其他控件上(实际上是在其他控件内部)。问题是,如果我将控件放在 z 顺序之前,其他控件会与我的控件重叠并且我的控件不会显示。如果我将另一个控件放在 z 顺序之前,我无法在我的控件中获取鼠标消息。

也许我做错了什么,或者我尝试实施控制的方式有误。任何形式的帮助将不胜感激。

谢谢,

哈维尔

【问题讨论】:

    标签: mfc controls transparency alphablending z-order


    【解决方案1】:

    我会抓住机会的。 :-)

    这应该为您提供完成我认为您想要的一切所需的一切。

    General Solution for Transparent Controls

    就 Z 顺序问题而言,z 顺序不影响消息优先级。您需要发布一些代码,以便我们确定那里发生了什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多