栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > .Net

WPF WindowsFormsHost透明方案

.Net 更新时间:发布时间: 百科书网 趣学号

目录
  • 介绍
  • 问题
  • 方案
    • WindowsFormHost黑色不透明 与 窗口颜色叠加
    • WindowsFormHost黑色 不透明 与 半透明窗口颜色不叠加
    • WindowsFormHost 下的Winform控件半透明
    • WindowsFormHost下的Winform控件半透明反差效果
  • 闪烁
  • 总结
  • 总结

介绍

在WPF中,如果你需要在WPF中使用Winform控件,你将需要使用WindowsFormsHost作为宿主,具体的原理是,WindowsFormsHost在当前的位置以及尺寸,在占用一块区域叠加Winform控件。这里具体可以参考HwndHost.

问题

问题:在WPF半透明窗口中显示WindowsformHost

  • 思路1: AllowTransparent 在WPF中,窗口最常见的透明方案是通过AllowTransparent=True来达到窗口半透明。这个方法会导致在WindowsFormHost中根据句柄播放视频没有画面。

  • 思路2:使用WindowChrome 通过查阅了大佬们的文章:

WPF 制作高性能的透明背景异形窗口(使用 WindowChrome 而不要使用 AllowsTransparency=True) - walterlv

使用 WPF 做一个可以逼真地照亮你桌面的高性能阳光 - walterlv

WPF 制作支持点击穿透的高性能的透明背景异形窗口

基于林德熙与walterlv两位大佬提出半透明背景方法, 并组合通过WindowsFormHost能够使出现神奇的效果。

方案 WindowsFormHost黑色不透明 与 窗口颜色叠加

WindowsFormsHost.Background ='Transparent'


    
        
    

    
        
            
        
    

WindowsFormHost黑色 不透明 与 半透明窗口颜色不叠加

WindowsFormsHost.Background ='#00FFFFFF' 任意透明的颜色值,都将为黑色

wf:Panel.BackColor="Transparent"


    
        
    

    
        
            
        
    

WindowsFormHost 下的Winform控件半透明

WindowsFormsHost.Background ='Black' 任意非透明颜色

wf:Panel.BackColor="#80FF0000" 这里透明度取值为01~FE, FE差不多为实色, 如果是FF则会变成一种高反差效果?


    
        
    

    
        
            
        
    

WindowsFormHost下的Winform控件半透明反差效果

WindowsFormsHost.Background =‘Black’ ` 任意非透明颜色

wf:Panel.BackColor="#FFFF0000" or red

这个就补贴代码了,替换上面的颜色值即可!

闪烁

在窗口不透明的时候会WindowsFormsHost内的控件会出现闪烁。

例如从屏幕边缘拖动窗口回出现下面的效果:

当窗口不透明的时候,基于WindowChrome 修改窗口大小变化也会出现闪烁:

// 基于这种情况可以使用ControlzEx的WindowChromeBehaviors的处理修改窗口闪烁
// 但是从屏幕边缘移动窗口也会出现闪烁,以及窗口不支持半透明显示


    
        
    
    
        
    

总结 总结

可参考如下表:

WF不透明黑色 叠加窗体颜色WF不透明黑色WF半透明WF半透明反差
半透明颜色N/AN/AN/A任意
WindowsformHostTransparent or {x:Null}#00FFFFFF 任意透明值BlackBlack
WinformPanelN/AN/A#80FF0000半透明值。任意实色值, Black则为全透明
是否闪烁
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/984880.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号