WPF程序在surface pro 9 windows 11操作系统下触摸一个透明背景窗口,透明背景消失

Jason Yuan 0 信誉分
2024-05-10T13:05:09.0466667+00:00

Surface pro 9 windows 11专业版操作系统下,触摸屏触摸到WPF透明背景窗口边缘时会导致透明窗口变成“云白”颜色,而失去透明效果,需要再次触摸窗口边缘才能恢复透明状态,具体如下图:

 窗体透明时的效果

透明时的效果

触摸屏触摸窗体边缘,透明窗口变“云白”色效果

触摸屏触摸窗体边缘,透明窗口变“云白”色效果

出问题时操作系统版本

出问题时操作系统版本

1.  为了尽可能的描述问题,我对该问题目前收集的资料同步出来;

使用WPF .net framework 4.6.1开发窗体应用,因需求所迫,窗口背景必须设置为透明,但是窗体上面的控件不透明,点击窗口透明的部分,鼠标不应穿透透明窗体。

为了实现上面的需求调查了wpf窗口透明的两种方式

方式一(调研时被排除掉了):

在xaml窗体设计器里将window的AllowsTransparency属性设置为true,Background属性设置为Transparent,WindowStyle属性设置为None。

这样做虽然窗口背景透明了,但是点击窗口透明部分鼠标能穿透窗体点击到窗体下面的控件,所以该方案被否决

 

方式二(现在正在使用的方式,同时也会出现本问题)

该方式参考了该网页的设计

https://www.cnblogs.com/microsoft-zh/p/16005873.html

设置window的Template,将其内部border的background设置为Transparent。

按照这种方式实现,窗体背景透明了,且鼠标不会穿透窗体。但是就引发了上述的问题,即在【Surface pro 9 windows 11专业版操作系统下,触摸屏触摸到WPF透明背景窗口边缘时会导致透明窗口变成“云白”颜色,而失去透明效果,需要再次触摸窗口边缘才能恢复透明状态】

 代码

经过尝试发现该问题仅在使用触摸屏时才会出现,使用鼠标点击窗口边缘不会出现该问题;在surface pro 7+等预装windows 10的surface pro上,用触摸屏也无法复现该问题。 

我进一步确认了该问题与windows11的新特性有关系。因为在windows的设置中有一个名为透明效果的开关,我关闭之后,上述“云白”效果发生了改变。

 上述“云白”效果发生了改变。

触摸屏点击窗口边缘时出现的“云白”效果变化了

云白”效果变化了

我还注意到windows11与windows10相比,在触摸屏下长按窗口标题时,windows 11的窗体四周会出现类似于“云白”的效果,但是windows10并没有此种效果。并且windows11在鼠标操作小也没有这种效果。

如下图,触摸屏下长按windows 11 的windows窗体,窗体四周出现“云白”

,窗体四周出现“云白

同样,关闭操作系统设置中的“透明效果”开关,上述窗体四周效果也变化了

也变化了

附带一个demo帮助复现,根据链接下载即可,这个程序运行时会创建一个全屏的窗口,在触摸屏上,且是windows 11操作系统时,点击屏幕的边缘就会把透明背景变“云白”

链接:https://pan.baidu.com/s/1pymb-ipLThLb8S77HOqVZw?pwd=x24v

提取码:x24v

我想请您帮忙看看,我想在windows 11使用触摸屏时,即使触摸到窗体边缘,也不要影响透明效果。如果实现不了,能否告知如何在windows 11上禁用这种特性,好让我可以暂时先用着。

Windows Presentation Foundation
Windows Presentation Foundation
.NET Framework 的一部分,它提供统一的编程模型,用于在 Windows 上构建业务线桌面应用程序。
131 个问题
{count} 票

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。