目前我有一个依赖透明效果的 Winforms 应用程序。然而,事实证明,这绝对是过去的痛苦!我正在学习的 Winforms 并不能很好地处理透明度。
我想知道使用 WPF 组件来实现透明位并使用 winforms 来实现其余部分是否会更容易(请注意,虽然我想将整个应用程序移至 WPF,但这并不可行!)。我对 WPF 几乎一无所知,这也是我来这里的原因!我正在考虑的是:
1) 在 Winforms 用户控件中托管 WPF 组件,例如WPF 控件示例:
<UserControl x:Class="WindowsFormsApplication1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">
<Grid>
<Rectangle Name="rectangle1" Stroke="White" Fill="Black" RadiusX="10" RadiusY="10" Opacity="0.7" />
<Rectangle Margin="57,101,43,99" Name="dialog" Stroke="Gray" Fill="White" RadiusX="10" RadiusY="10" />
</Grid>
</UserControl>
2) 在 WPF 控件的白色矩形(对话框)内托管 Winforms 用户控件(内容)。 3) 允许内容(Winforms 用户控件)调用 WPF-Control 父级上的代码。
首先要做的事情...
- 这是合理的做法还是我找错了对象?
- 可以通过更简单的方式实现这一目标吗?
- 有人可以帮我吗? (我们将不胜感激地收到示例代码!)
- 最后...是否有任何在线资源可以帮助我 a) 学习 WPF 和 b) 变得更加自给自足?
最佳答案
这当然是可能的,而且我认为您是对的,这将是实现透明度的最简单方法。
我自己没试过,but according to this article on CodeProject ,应该很简单。您应该使用 ElementHost control托管您的 WPF 内容。
在 WinForms 控件中托管 WPF 是一种受支持的方案,是框架中内置的一项功能。所以这样做应该没有问题。还有一个 WPF 组件用于反其道而行之,在 WPF 应用程序中托管 WinForms。
关于C# Winforms-WPF 互操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/936134/