【问题标题】:Can I use a WPF control in WinForms to achieve transparency effects?我可以在 WinForms 中使用 WPF 控件来实现透明效果吗?
【发布时间】:2011-06-24 16:48:12
【问题描述】:

是否可以在 WinForms 中使用 WPF,来实现 question 中使用的想法。我正在尝试创建一个半透明面板。

【问题讨论】:

    标签: wpf vb.net winforms wpf-controls winforms-interop


    【解决方案1】:

    您可以使用 WinForm 的 Opacity 属性使其半透明。

    【讨论】:

    • 请注意我要求使用半透明面板的问题。
    【解决方案2】:

    技术上是的 - 有 hosting WPF in WinForms 使用 ElementHost 的方法。

    但是,您可能会遇到透明度问题。 WPF 的渲染与 WinForms 不同,虽然您可以使 WPF 控件透明,但下面的 WinForms 不会尊重这一点。

    【讨论】:

    • +1 这是正确的。您将遇到一大堆问题并最终陷入混乱,以至于您希望一开始就在 WPF 中编写应用程序。 WinForms 不支持透明度,您无法通过这样的杂乱无章的解决方案来解决它。
    • 有什么解决方法吗?我已经完成了几乎 70% 的应用程序,我不能回去在 WPF 中再次制作整个程序。
    • @abcd:取决于您到底想要完成什么。我不确定最近对透明度和类似效果的迷恋是什么。我从未见过从这些“功能”或实现和运行它们所需的资源中受益的应用程序。分层窗口是一种选择,WinForms 提供的用于模拟透明度的内置机制也是如此,其中背景由父/容器控件绘制。或者,您可以直接解决问题并使用照片编辑器创建一个半透明的图像。
    • @Cody 当图像后面的对象是运动图片时,我是否能够获得图像的半透明效果
    • @abcd:如果您使用动画 GIF,当然可以。内置的PictureBox 控件很好地支持了这一点。您只需要一个图像,而不是两个在单独的控件中相互叠加的图像。如果您绝对必须对两张图像执行此操作,您可以考虑使用Graphics.DrawImage 方法在另一张上绘制一张。但是您仍然不会获得部分透明度,您只能通过顶部图像的清晰区域看到背景图像。
    猜你喜欢
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    相关资源
    最近更新 更多