在C#中的分层窗口上的Alpha混合控制
-
14-11-2019 - |
题
我有一个带有ws_ex_layered扩展样式集的分层表单。我使用Createwindowex(...)API函数创建了一个孩子“编辑”控件;控制它在那里但没有涂漆,表单上没有任何东西。
我知道,当在顶部窗口上使用ws_ex_layered样式时,不会再发送wm_paint消息,并且子控件都没有收到它,以便为什么它不会出现。
请考虑到表单透明度设置为255,使用UpdatelayeredWindow(...)API具有透明图像。
当我通过编辑控件悬停鼠标时,将显示文本光标,我可以复制它内部的文本。
我猜我要处理的问题是以某种方式使控件接受用户绘画。
我已经尝试用与形式相同的技术绘制控制,并且我已经从表单中创建了兼容的DC,但我不知道这是可能的,我的控件仍然没有绘制。
如果我向该控件发送WM_PPTERCLIENT,它应该工作吗?在这种情况下,DC应该是分层父形式?我也试过这个,但我无法做到它。
正常形式: http://img580.imageshack.us/i/formy.png/
分层表单: http://img6.imageshack.us/i/layeredform.png/
我的问题是如何让我的编辑控制接受Alpha-Blended-User-Paint?如何在分层形式上绘制Alpha-Blended控件?
解决方案
最后我找到了一种方法来做,
我要做的是获取每个控件的位图 - 图像,并在表单的背景上绘制它......当我应用表单的UpdatelayeredWindow时,表单位图包含所有控件,
我还知道这是否是最好的做法,虽然
该方法很好地工作,但我必须完善它并添加更多的交互+ Alpha混纺控件。在另一个手中是有关的