Open utterances-bot opened 4 years ago
亲测有效,居然以前没试出这种组合,这个组合很合情合理啊,以前的我真傻。
@DinoChan 我也没试过这种组合,汗……还是我们团队的另一个小伙伴告诉我的,只是没提炼出这三个必要条件而已。
这确实是个很好的方法
@lifei8142556 不过窗口不能通过拖拽到顶部最大化,这是个问题。对于制作固定大小的透明窗口来说不错。其中的原理可能是这个:
试用了真香, 谢谢水哥 经试用发现 WindowChrome的方式透明窗口 与 AllowsTransparency=true透明窗口还有一个区别 WindowChrome 实现的透明wpf窗口会捕获透明区域的鼠标事件 AllowsTransparency实现的透明wpf窗口不会抹茶透明区域的鼠标事件(下面的窗口响应了鼠标事件)
@nocanstillbb 这真是一个有趣的发现,于是我们可以做更多事情了!
你好,请教一下,我在使用的WindowChrome的时候发现拖动左边框的时候右边框很不和谐,有什么好办法能够解决么?
@luwei888 并没有好的办法,我也在寻找。你可以阅读这篇文章了解更详细的情况:
@walterlv 这是wpf的渲染原因还是WindowChrome的问题,我可能需要自己编写拖动边框的代码了
@luwei888 WPF 的渲染与 Windows 操作系统的渲染不同步。它们两者都不知道对方的渲染时机,做不到同步渲染,于是出现了时间差。
@walterlv 不好意思,再请教一下,那wpf做无异常的边框缩放窗口,应该使用什么方案解决呢?
@luwei888 目前没有什么好方法,你可以观察系统自带的那些程序,也在常使用各种方法来解决这样的问题,但都不完美。
WindowChrome 透明窗口捕获鼠标事件 ,那个如何做穿透效果呢?
谢谢作者,已转载本文:https://dotnet9.com/?p=2854
WindowChrome有一个问题,设置了后对窗口进行缩放,会十分卡顿,尤其在拉伸左侧边框这是什么原因呢?
始终无法找到一个在可缩放下可用的透明WindowChrome
虽然WindowChrome效率接近原生,但是还是不能鼠标点击穿透啊,看来还是AllowsTransparency="True"牛皮
感谢大神 学习了
有什么办法做事件穿透么,下层窗体获取不到事件
在 windows7 系统下 会有黑边怎么处理呢?
还有就是这种实现也会影响 webview2 在windows7 下的渲染, 有没有好的解决方案呢?
@Dev-Wiki 需要判断一下 DwmIsCompositionEnabled
,如果为 false 就需要开启 AllowsTransparency
。这部分用户大约占 Windows 7 的 6% 左右,是那些无法开启 Aero 的用户。
https://docs.microsoft.com/en-us/windows/win32/api/dwmapi/nf-dwmapi-dwmiscompositionenabled
@walterlv 我这是在虚拟机测试的. 本来是解决 AllowsTransparency=True 导致的 WebView2 加载网页显示空白问题. 如果在开启就还会出现空白了. 其实按照WindowChrome的方式设置透明, 在Win7 虚拟机里面会出现渲染问题. 网页闪烁.
@walterlv 我录了一个视频, 三种有不同的表现, 现在深受困扰. webview2 在windows7 的系统下, 使用 不同的窗口设置显示问题. https://nas.devwiki.net/share.cgi?ssid=75651c8ed4764d91814fc5b5e88874d2&ep=&fid=75651c8ed4764d91814fc5b5e88874d2&open=normal)
@walterlv 我录了一个视频, 三种有不同的表现, 现在深受困扰. webview2 在windows7 的系统下, 使用 不同的窗口设置显示问题. https://nas.devwiki.net/share.cgi?ssid=75651c8ed4764d91814fc5b5e88874d2&ep=&fid=75651c8ed4764d91814fc5b5e88874d2&open=normal)
在 Windows 下制作非标准形状的窗口会遇到各种各样的问题,除了对老旧的系统兼容不好之外,还要处理各种边界情况和性能问题。所以我强烈建议,如果产品要长期维护的话,跟产品和视觉好好谈一谈,不要折腾那些独树一帜的窗口外形了(尤其是圆角,没有特别必要的情况下还牺牲了一大堆开发效率、产品性能和功能稳定性)。
水哥,我发现用WindowChrome替换AllowsTransparency=True,会出现一个问题,在桌面上播放一个Gif图,然后打开WindowChrome的透明窗体,透过窗体看Gif图,动图不动了!
@wutangyuan 这是最近新出的一项优化,目前尚在讨论中:
遇到当自定义TextBox的Validation.ErrorTemplate时,期望在底部显示报错信息但是定义了Window.Template会不显示。 具体ErrorTemplate类似于
<ControlTemplate x:Key="validationTemplate">
<DockPanel>
<TextBlock DockPanel.Dock="Bottom" Foreground="Red" FontSize="12" Text="{Binding [0].ErrorContent}" />
<AdornedElementPlaceholder />
</DockPanel>
</ControlTemplate>
需要在Window.Template的ContentPresenter外包一层AdornerDecorator,这样Validation.ErrorTemplate可以正常显示。
<Window.Template>
<ControlTemplate>
<Border ...>
<Border ...>
<AdornerDecorator>
<ContentPresenter />
</AdornerDecorator>
</Border>
</Border>
</ControlTemplate>
</Window.Template>
分享一下
大佬, 引用的林德熙的那篇文章, 链接寄啦, 需要更新
WPF 制作高性能的透明背景异形窗口(使用 WindowChrome 而不要使用 AllowsTransparency=True) - walterlv
WPF 制作高性能的透明背景异形窗口(使用 WindowChrome 而不要使用 AllowsTransparency=True)
https://blog.walterlv.com/post/wpf-transparent-window-without-allows-transparency.html