在Windows和C#中,我使用具有WS_EX_LAYERED样式的表单,并调用UpdateLayeredWindow将背景设置为透明/α混合的图像:
NativeMethods.BLENDFUNCTION blend = new NativeMethods.BLENDFUNCTION();
blend.BlendOp = NativeMethods.AC_SRC_OVER;
blend.BlendFlags = 0;
blend.SourceConstantAlpha = 255;
blend.AlphaFormat = NativeMethods.AC_SRC_ALPHA;
NativeMethods.UpdateLayeredWindow(form.Handle, screenDc, ref topPos, ref size,
memDc, ref pointSource, 0, ref blend, NativeMethods.ULW_ALPHA);
在图像透明的窗体区域上,窗体不接收鼠标事件。他们走到窗体下面的窗口。
是否有可设置为允许窗体接收鼠标事件(鼠标移动、鼠标向下等)的窗口样式或选项。在整个表面上?
发布于 2012-12-14 10:52:31
来自分层窗口
命中测试
一个分层窗口的命中测试是基于窗口的形状和透明度。这意味着窗口的颜色键控区域或其alpha值为零的区域将允许鼠标消息通过。如果分层窗口具有WS_EX_TRANSPARENT扩展窗口样式,则将忽略分层窗口的形状,并将鼠标事件传递到分层窗口下面的其他窗口。
我会试着模仿那种WS_EX_TRANSPARENT风格
https://stackoverflow.com/questions/13884561
复制相似问题