簡體   English   中英

分層窗口,UpdateLayeredWindow,alpha混合和鼠標事件

[英]Layered windows, UpdateLayeredWindow, alpha blending and mouse events

在Windows Forms和C#中,我使用的是WS_EX_LAYERED樣式的表單,並調用UpdateLayeredWindow將背景設置為透明/ alpha混合的圖像:

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);

在窗體的圖像是透明的區域上,窗體不接收鼠標事件。 他們轉到窗體下的窗口。

是否可以設置窗口樣式或選項以使窗體在其整個表面上接收鼠標事件(鼠標移動,鼠標向下移動等)?

分層的Windows

命中測試

分層窗口的命中測試基於窗口的形狀和透明度。 這意味着使用彩色鍵或alpha值為零的窗口區域將使鼠標消息通過。 如果分層窗口具有WS_EX_TRANSPARENT擴展窗口樣式,則分層窗口的形狀將被忽略,並且鼠標事件將傳遞到分層窗口下方的其他窗口。

我會嘗試修改WS_EX_TRANSPARENT樣式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM