由于项目需求需要用到透明控件。但是,winform项目的控件透明都是将父控件的图像绘制成子控件的背景来实现的,这种透明存在很大的问题,不合格。
然后,我想到wpf在透明这块做的比较好,想是不是可以在winform中使用wpf控件来实现,结果发现还是走不通,由于elementhost控件是winform中的控件,而wpf控件必须要用它来承载才能在winform中实现,不合格。
最后,百度发现了使用Region实现透明控件,
Region透明控件
主要是设置控件的绘制区域来实现的透明控件,所以也不能说是透明控件,只能说是只绘制控件的非透明部分来达到透明的效果,不过基本能够满足我的需求。效果图如下:
这个存在的问题是未绘制区域,就无法触发控件的点击事件,点击的时候会直接点击到后面的控件上。目前没有找到更好的实现方法,之前百度的时候看到有说最好的办法是使用directx重写控件,不过这个方法对本人来说有点复杂了。如果大家有更好的实现方法,欢迎交流。
前言由于项目需求需要用到透明控件。但是,winform项目的控件透明都是将父控件的图像绘制成子控件的背景来实现的,这种透明存在很大的问题,不合格。然后,我想到wpf在透明这块做的比较好,想是不是可以在winform中使用wpf控件来实现,结果发现还是走不通,由于elementhost控件是winform中的控件,而wpf控件必须要用它来承载才能在winform中实现,不合格。最后,百度发现了...
1、WindowsFormsHost不支持背景
透明
;
2、
WPF
Panel.ZIndex无效,WindowsFormsHost更优先;
3、使用Show打开两个窗口,数据同步延时
解决方案:
使用Popup,解决最顶层、解决背景
透明
使用Canvas,解决元素拖拽
XA...
今天是礼拜6,下雨,没有外出,闲暇就写一篇博文讲下如何在
Winform
中使用
WPF
控件
。原有是我在百度上搜索相关信息无果,遂干脆动手自己
实现
。
WPF
控件
的漂亮是
Winform
无法匹及的,本文主旨是在
Winform
工程中如何使用
WPF
控件
。
先看下效果,如下图:
左边是传统的
Winform
控件
,右边是DebugLZQ引入的
WPF
控件
,我们可以很清楚的看到图片的“半
透明
”效果、TextBo...
目录介绍问题方案WindowsFormHost黑色不
透明
与 窗口颜色叠加WindowsFormHost黑色 不
透明
与 半
透明
窗口颜色不叠加WindowsFormHost 下的
Winform
控件
半
透明
WindowsFormHost下的
Winform
控件
半
透明
反差效果闪烁总结
在
WPF
中,如果你需要在
WPF
中使用
Winform
控件
,你将需要使用WindowsFormsHost作为宿主,具体的原理是,WindowsFormsHost在当前的位置以及尺寸,在占用一块区域叠加
Winform
控件
。这里具体可以
如下图,创建了一个名为“Clocker”的窗体
控件
项目。
我这个工程是先新建的一个windows窗体项目Form1.然后右击解决方案添加了一个新建“Windows窗体
控件
库”如上图,所示。
整个工程如下图
首先,在用户
控件
设计器中,拖入一个日期选择框、一个按钮,一个Timer,还有一个布局容器Table...
2. 在自定义
控件
类中重写OnPaint方法,
实现
控件
的绘制。
3. 在自定义
控件
类中重写OnMouseDown、OnMouseUp、OnMouseMove等方法,
实现
控件
的交互。
4. 在自定义
控件
类中触发事件,以响应用户的操作。
5. 在使用自定义
控件
的窗体中,订阅自定义
控件
的事件,以执行相应的操作。
希望这个回答能够帮到你。