【发布时间】:2014-10-15 15:34:43
【问题描述】:
我有一个 WPF 应用程序,它通过在透明窗口上绘画来在计算机屏幕上进行注释。使用 PInvoke 设置透明度:
extendedWindowStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
SetWindowLong(hwnd, GWL_EXSTYLE, extendedWindowStyle | WS_EX_TRANSPARENT);
现在,当我将显示适配器颜色深度从 32 位调低到 16 位时,我遇到了问题。 那时我不再能够在透明窗口上绘画,而是鼠标到达透明 WPF 窗口下方的控件。任何想法如何解决这个问题?
(顺便说一句,使用 PInvoke 是让透明度在“Windows Basic”和“高对比度”主题上正常工作的唯一方法,这些主题会关闭 Aero 透明度)
【问题讨论】:
-
WS_EX_TRANSPARENT 是一个非常弱的 Windows hack,用于模拟透明度,仅适用于子窗口。 WPF 应用程序永远不需要的一个,非常不清楚您为什么使用它。顶级窗口应使用 AllowTransparency = True 和 0% 不透明背景画笔。
标签: c# wpf transparency