首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能在HwndHost中托管一个WPF页面?

是否有可能在HwndHost中托管一个WPF页面?
EN

Stack Overflow用户
提问于 2021-03-14 04:53:04
回答 1查看 233关注 0票数 0

首先,可能觉得这是一个愚蠢的问题(您可以直接在WPF窗口中加载WPF内容),但实际上可以阅读完整的描述以了解我为什么需要这个.

我正在开发一个C# WPF应用程序,以模拟Windows丙烯酸模糊效果。我正在使用这里的示例代码:Win32组分样品

使用此代码,我能够在HwndHost或直接在窗口上创建丙烯酸模糊。但这会导致Windows问题,这意味着我在窗口上绘制的所有控件都将出现在AcrylicBlur (模糊)下。就像这个:

亚克力内容重叠我的WPF按钮

因此,我决定创建一个带有丙烯酸效果的窗口,并创建一个HwndHost作为该窗口的子窗口,这样我就可以将WPF内容重叠在丙烯酸模糊的顶部,这样WPF控件就不会被模糊化。

可能有效的解决方案

还有一个我可以尝试的概念,就是创建两个窗口,一个用丙烯酸,另一个用WPF,并为两个窗口共享WM_POSITIONCHANGED消息,这使得窗口移动和调整大小相等。但这有几个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-30 08:56:08

找到一种托管WPF页面的方法,而不是使用HwndHost,而是使用HwndSource。

代码语言:javascript
复制
HwndSourceParameters param = new HwndSourceParameters("Host");
param.PositionX = 10;
param.PositionY = 10;
param.Width = 500;
param.Height = 500;
param.ExtendedWindowStyle +=0x00200000;  //This style creates a transparent window
param.WindowStyle = 0x10000000;
    
HwndSource src = new HwndSource(param);
src.SizeToContent = SizeToContent.WidthAndHeight;
src.CompositionTarget.BackgroundColor = Colors.Transparent;
src.RootVisual = new Page1(); //Your Page Here
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66621219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档