-
WinForm控件半透明遮罩dll
2019-10-07 10:06:40可在目标控件上显示或隐藏半透明遮罩层,支持透明度和颜色自定义,支持在遮罩层上显示自定义文本,文本颜色可调。已封装有x86/x64/AnyCpu三种dll,使用时引用相应的dll调用相关方法即可,方法参数说明已以截图形式放... -
WinForm 设置透明度
2020-07-02 12:02:202、控件透明度 2.1、完全透明 BackColor = Transparent 2.2、不完全透明 在“完全透明”的基础上,设置BackgroundImage为一张带有百分比透明度的图片。通过图片的透明度,来间接设置图片的透明度 2.3、控件叠加时,...1、窗体透明度
opacity属性,0%完全透明
2、控件透明度
2.1、完全透明
BackColor = Transparent
2.2、不完全透明
在“完全透明”的基础上,设置BackgroundImage为一张带有百分比透明度的图片。通过图片的透明度,来间接设置图片的透明度
2.3、控件叠加时,lable等控件范围内显示了
举例
在如下步骤下会出现的问题:
a、Form1设置背景色
b、在Form1上添加Panel1,透明
c、在Panel1上添加Panel2,透明,且BackgroundImage设置一张透明度为30%的图片
d、在Panel2上添加Lable1。
此时,Lable1控件范围内完全透明,而不是显示Panel2的透明度。解决方案
在Lable1外,再套一个Panel3,Panel3透明,且BackgroundImage设置和Panel2一致。
100、附注
在设置透明度后,加载窗体可能会出现界面加载慢且闪烁问题。这很可能是panel控件的bug 。
解决方案见《panel设置背景透明后,窗体大小改变时,界面闪烁》 -
Winform 使用 WPF控件 设置图片透明度样例
2017-06-23 09:51:05Winform使用自定义WPF控件设置图片透明度样例: 点击1加载图片,点击2设置透明度0.1,点击3设置透明度0.9; -
非计算机专业求大神指导,c#winform trackbar控件改变图片透明度
2016-05-04 03:20:03c#winform 怎样利用trackbar控件反复改变图片的透明度 这是我写的代码: private void trackBar1_Scroll(object sender, EventArgs e) { label1.Text = string.Format("{0}%", trackBar1.Value); Bitmap bitmap... -
C# WinForm开发的颜色选择器控件,支持透明度。
2013-05-06 17:05:06基于WinForm开发的颜色选择器控件,支持透明度调节。 -
Winform 视频流上添加透明控件
2018-12-29 09:48:42效果图: ...最近一直在研究Winfrom上如何添加透明控件,经过各种方法的尝试,终于实现了一个还算可以的实现方案....通过设置BackColor 和TransparencyKey 属性来实现...窗体设置Opacity属性实现透明度 ,一种透视...效果图:
最近一直在研究Winfrom上如何添加透明控件,经过各种方法的尝试,终于实现了一个还算可以的实现方案.实现思路就是通过嵌套多层窗体来实现透明效果.
通过设置 BackColor 和 TransparencyKey 属性来实现透明. 也就是下层窗体加载视频流. 上层窗体实现透明控件效果.(可以嵌套多层窗体。窗体设置Opacity属性实现透明度 ,一种透视的效果)
this.BackColor = Color.Black; this.TransparencyKey = Color.Black;
上层窗体尺寸设置和主窗体大小一致 ,监听LocationChanged和Resize事件 ,实现上层窗体和主窗体联动效果....
关于上层控件透明实现 (个人想法)
1. 设置背景色、文字颜色(不设置颜色,有可能文字不太清晰)等
2. 控件背景可通过 重写 OnPaint 方法绘制,包括点击,移动,拖拽等功能。
3. 背景图的背景色做成透明色
代码片段:
using System; using System.Drawing; using System.Windows.Forms; using TransparentWindowsForms.Properties; /************************************************************************ * Copyright (c) 2018 All Rights Reserved. * 创建人: QuJun * 创建时间:2018/12/27 * 描述: 树形结构 ************************************************************************/ namespace TransparentWindowsForms.Control.menutree { public partial class MenuTreeList : UserControl { private int _menu_button_width = 30; private int _menu_button_height = 60; private int _menu_button_point_x = 0; private int _menu_button_point_y = 0; private bool _isShowMenu = false; private bool _isShowMenuButton = true; private Image _bg_image = Resources.menutree_bg; private Image _list_bg = Resources.menutree_left_button; private Image _menu_left_arrow = Resources.menutree_left_close; private int _menu_left_point_x = 0; private int _menu_left_point_y = 0; private string _menu_title = "设备列表"; private TreeView _tree_view = null; public MenuTreeList() { InitializeComponent(); this.Load += MenuTreeList_OnLoad; this.MouseDown += Form_MouseDown; } public string Menu_Title { get { return _menu_title; } set { _menu_title = value; } } private void MenuTreeList_OnLoad(object sender, EventArgs e) { init(); } private void init() { _tree_view = new TreeView(); _tree_view.Location = new Point(25, 70); _tree_view.Size = new Size(this.Width - 25 * 2, this.Height - 70 - 50); _tree_view.Nodes.Add(getTreeNode()); _tree_view.Visible = false; _tree_view.BorderStyle = BorderStyle.None; _tree_view.ForeColor = Color.Snow; _tree_view.ImageList = getImageList(); _tree_view.BackColor = Color.FromArgb(26, 32, 42); _tree_view.ItemHeight = 20; this.Controls.Add(_tree_view); } private ImageList getImageList() { ImageList list = new ImageList(); list.Images.Add("structure", Resources.menutree_structure); list.Images.Add("carmer", Resources.menutree_videocamera); return list; } private TreeNode getTreeNode() { TreeNode treeNode = new TreeNode(); treeNode.Name = "交警大队"; treeNode.Text = "交警大队"; treeNode.ImageIndex = 0; treeNode.SelectedImageIndex = 0; //根节点下面的子节点 TreeNode node1 = new TreeNode(); node1.Text = "展现景湾 (3/3)"; node1.ImageIndex = 0; treeNode.SelectedImageIndex = 0; TreeNode node2 = new TreeNode(); node2.Text = "警用设备 (3/3)"; node2.ImageIndex = 0; node2.SelectedImageIndex = 0; TreeNode node3 = new TreeNode(); node3.Text = "大楼摄像头"; node3.ImageIndex = 1; node3.SelectedImageIndex = 1; TreeNode node40 = new TreeNode(); node40.Text = "全景摄像头"; node40.ImageIndex = 1; node40.SelectedImageIndex = 1; //将节点添加到根节点中 treeNode.Nodes.Add(node1); treeNode.Nodes.Add(node2); treeNode.Nodes.Add(node3); treeNode.Nodes.Add(node40); //为第二个子节点1添加子节点 TreeNode childNode1 = new TreeNode(); childNode1.Text = "展现景湾1"; childNode1.ImageIndex = 1; childNode1.SelectedImageIndex = 1; TreeNode childNode2 = new TreeNode(); childNode2.Text = "展现景湾2"; childNode2.ImageIndex = 1; childNode2.SelectedImageIndex = 1; TreeNode childNode3 = new TreeNode(); childNode3.Text = "展现景湾3"; childNode3.ImageIndex = 1; childNode3.SelectedImageIndex = 1; node1.Nodes.Add(childNode1); node1.Nodes.Add(childNode2); node1.Nodes.Add(childNode3); //为第二个子节点2添加子节点 TreeNode childNode4 = new TreeNode(); childNode4.Text = "警用设备1"; childNode4.ImageIndex = 1; childNode4.SelectedImageIndex = 1; TreeNode childNode5 = new TreeNode(); childNode5.Text = "警用设备2"; childNode5.ImageIndex = 1; childNode5.SelectedImageIndex = 1; TreeNode childNode6 = new TreeNode(); childNode6.Text = "警用设备3"; childNode6.ImageIndex = 1; childNode6.SelectedImageIndex = 1; node2.Nodes.Add(childNode4); node2.Nodes.Add(childNode5); node2.Nodes.Add(childNode6); return treeNode; } protected override void OnPaint(PaintEventArgs e) { _menu_button_point_x = 0; _menu_button_point_y = 0; if (_isShowMenuButton) e.Graphics.DrawImage(_list_bg, new Rectangle(new Point(_menu_button_point_x, _menu_button_point_y), new Size(_menu_button_width, _menu_button_height))); if (_isShowMenu) { e.Graphics.DrawImage(_bg_image, new Rectangle(new Point(0, 0), new Size(this.Width, this.Height))); _menu_left_point_x = this.Width - _menu_left_arrow.Width - 10; _menu_left_point_y = 40; e.Graphics.DrawImage(_menu_left_arrow, new Rectangle(new Point(_menu_left_point_x, _menu_left_point_y), new Size(_menu_left_arrow.Width, _menu_left_arrow.Height))); StringFormat format = new StringFormat(); format.Alignment = StringAlignment.Far; //字符串的垂直对齐方式 format.LineAlignment = StringAlignment.Center; Brush bush = new SolidBrush(Color.SkyBlue);//填充的颜色 Font font = new Font("微软雅黑", 11, FontStyle.Bold); SizeF z = e.Graphics.MeasureString(Menu_Title, font); e.Graphics.DrawString(Menu_Title, font, bush, new PointF(20 + z.Width, _menu_left_point_y + 10), format); } } private void Form_MouseDown(object sender, MouseEventArgs e) { // 菜单按钮点击 if (e.X > _menu_button_point_x && e.X < _menu_button_point_x + _menu_button_width && e.Y > _menu_button_point_y && e.Y < _menu_button_point_y + _menu_button_height) { if (_isShowMenuButton) showPictureBoxList(); return; } if (e.X >= _menu_left_point_x && e.X <= _menu_left_point_x + _menu_left_arrow.Width && e.Y >= _menu_left_point_y && e.Y <= _menu_left_point_y + _menu_left_arrow.Height) { if (_isShowMenu) closePictureBoxList(); return; } } private void showPictureBoxList() { _isShowMenuButton = false; _isShowMenu = true; _tree_view.Visible = true; Invalidate(); } private void closePictureBoxList() { _isShowMenuButton = true; _isShowMenu = false; _tree_view.Visible = false; Invalidate(); } } }
以上纯属个人想法,不喜勿喷 ,欢迎指正。。
Demo包含一些自定义控件(下拉列表,树形列表 , 图片列表等)均可实现透明效果。主窗体是一个海康相机的监控视频。使用时可替换成其他视频。
Demo地址:https://download.csdn.net/download/haiyangyunbao813/11032553
注: 背景图会稍微有一些锯齿.影响美观. 后来使用DSkin实现了下效果.可以完美实现透明控件效果.(唯一美中不足的是DSKIN不是开源的. 若使用,需购买授权码. 请考虑后使用. )
参考文章:https://blog.csdn.net/haiyangyunbao813/article/details/88740404
DSkin实现Demo下载地址:https://download.csdn.net/download/haiyangyunbao813/11049541
-
WinForm实现半透明遮罩层
2019-04-28 14:47:00在Winform窗体中实现半透明遮罩层比在网页中通过div+css实现半透明效果更复杂更难,网上方法有很多,但是我用的解决方法是弹出一个新窗口并且调整它的透明度,然后遮罩住原来的窗口,使用户不能对原来的窗口进行操作,...在Winform窗体中实现半透明遮罩层比在网页中通过div+css实现半透明效果更复杂更难,网上方法有很多,但是我用的解决方法是弹出一个新窗口并且调整它的透明度,然后遮罩住原来的窗口,使用户不能对原来的窗口进行操作,即鼠标不能穿透,但是在窗体上调Opacity属性的值后在此窗体上的所有控件和内容也会产生透明效果,无法单独控制,所有我是再新建一个窗体来放置要显示的内容的。
效果如下图:
- 第一步:新建一个和要遮盖的窗体的宽高相同的form窗体。
- 设置需要透明的背景色BackColor,我这里是黑色Black;
- 设置窗体系统菜单框ControlBox为False;
- 设置窗体的边框FormBorderStyle为FixedSingle;
- 设置窗体透明度Opacity为50%(透明值可根据自己需求调);
- 设置ShowInTaskbar为False,使窗体不在Windows任务栏显示;
- 设置窗体第一次出现时的位置StarPosition为CenterScreen,并且把要遮罩的原来的窗体这个属性也设置同样的值。
2.第二步:新建一个放置显示内容的form窗体。
- 设置ShowInTaskbar为False,使窗体不在Windows任务栏显示;
- 设置窗体第一次出现时的位置StarPosition为CenterScreen。
3.第三步:因为遮罩层窗体和内容显示窗体需要同时打开和同时关闭的,所以我是先通过一个button来点击打开遮罩层窗体,然后再在遮罩层窗体load加载时打开显示内容的窗体(Load事件);在关闭时我是在显示内容的窗体上点击关闭按钮,再在显示内容窗体关闭了的时候关闭遮罩层窗体(FormClosed事件);而且窗体如果可以手动移动的话还要给遮罩层窗体一个相对于原来窗体的定位。
- 原来窗体点击button显示遮罩层的代码:
//点击生成按钮打开遮罩层
private void btnGenerate_Click(object sender, EventArgs e)
{
Popup2 popup2 = new Popup2();
//show(this)相对定位于原来的窗体Form1来打开,与遮罩层里的定位代码相关
popup2.Show(this);
}
- 遮罩层窗体里的代码:
PopupContent popcontent = null;
private void Popup2_Load(object sender, EventArgs e)
{
//遮罩层相对Form1定位
Form1 f = Owner as Form1;
Location = new Point(f.Location.X, f.Location.Y);
//生成成功弹窗
popcontent = new PopupContent();
popcontent.TopMost = true;//设置内容窗体显示在最顶层窗体
popcontent.Show();
}
- 弹窗内容窗体里的代码:
//关闭内容弹窗
private void btnSearch2_Click(object sender, EventArgs e)
{
this.Close();
}
//生成内容弹窗关闭事件
private void PopupContent_FormClosed(object sender, FormClosedEventArgs e)
{
//这里不直接用Form.Close()是因为关闭时窗体会出现闪烁直接隐藏
Application.OpenForms["Popup2"].Close();
}
步骤到此全部结束,代码仅供参考,要用时还需按自己的命名和编写。下面是窗体透明的拓展:
设置窗体的 TransparencyKey属性 (TransparencyKey是根据颜色来透明的,而且是100%透明):
比如:
this.BackColor =Color.Black;
this.TransparencyKey = Color.Black;
这样TransparencyKey会把背景色为黑色的窗体变为100%透明,就像是把窗体给隐藏了,但是窗体上的控件和内容并不会跟着有透明效果。
-
Windows Mobile 透明控件
2009-01-08 19:28:00.NET Framework的WinForm程序支持支持调节控件的透明度和GDI+,用它可以实现例如淡入淡出这种很酷的界面效果。而.NET Compact Framework的窗体和控件不支持透明和GDI+,因此常常利用图片来完成一些美观的程序界面....NET Framework的WinForm程序支持支持调节控件的透明度和GDI+,用它可以实现例如淡入淡出这种很酷的界面效果。而.NET Compact Framework的窗体和控件不支持透明和GDI+,因此常常利用图片来完成一些美观的程序界面效果,这样会使得程序包附带了很多用于交替的图片而体积变大。
今天看到了Windows Mobile 5.0/6上也有Alpha Blend API,可以用于实现一些透明的控件,如下图所示:
心动了吧?
上面的demo程序来自 AlphaMobileControls 的开源项目,AlphaMobileControls提供了一些可以实现透明效果的简单控件,如:AlphaLabel, AlphaPictureBox, AlphaImageButton 等,使用的时候必须将它们放到特殊的 AlphaPanel 或 AlphaForm 容器控件上。这套控件是通过封装了从Windows Mobile 5.0开始提供的 Imaging API 和 AlphaBlend() API 函数实现的,不能用在Windows Mobile 2003的程序上。另外,使用C/C++的朋友也可以参考相关的API,同样可以实现这种透明效果。
关于实现Windows Mobile Alpha Blend的细节,可以参考这篇文章:http://blogs.msdn.com/chrislorton/archive/2006/04/07/570649.aspx
另外,还有一种实现控件透明背景的方法,使用C/C++和API实现用画背景的Pattern Brush来画控件,产生效果如下:
这里不再多介绍,可以看原文:http://www.codeproject.com/KB/mobile/transparent_controls.aspx
-
Windows Mobile实现透明控件
2009-11-17 20:22:00.NET Framework的WinForm程序支持支持调节控件的透明度和GDI+,用它可以实现例如淡入淡出这种很酷的界面效果。而.NET Compact Framework的窗体和控件不支持透明和GDI+,因此常常利用图片来完成一些美观的程序界面... -
Windows Mobile实现透明控件
2008-12-10 15:46:00.NET Framework的WinForm程序支持支持调节控件的透明度和GDI+,用它可以实现例如淡入淡出这种很酷的界面效果。而.NET Compact Framework的窗体和控件不支持透明和GDI+,因此常常利用图片来完成一些美观的程序界面... -
WinForm实现水印效果,亮度调节效果
2017-04-07 17:24:10对WinForm程序加水印(覆盖在最前面,不是在Background),不受窗体的控件影响,能对手机拍的图片加上水印。同时,通过设置透明度,可以达到亮度调节的作用 -
C# Winform窗体基础属性
2020-10-30 14:09:16C# Winform窗体基础属性 窗口样式: Inco:改图标样式; MaxmizeBox:true;...整个窗口透明度 布局: AutoScroll:true / false;如果控件超出窗口返回,是否自动显示滚动条; AutoSize:tr -
WinForm下屏幕截图程序的实现
2019-08-19 21:29:02截图程序的代码参考了一个印度人的博客还有周银辉的博客, 这... 大致思路是按截图按钮后, 打开另一个Form, 这个Form没有边框, 初始就是最大化占满整个屏幕, 背景色为白色, 透明度为50%. 这样就差不多是个半透明遮罩... -
Winform系统设计开发中的一些经验总结
2017-12-04 20:00:00控件的图片、图片透明颜色 控件的命名统一 菜单项目menu_ 工具条按钮tsb_ 文本txt_、下拉列表cmb_等 控件布局 基类BaseForm实现统一出现位置 窗体的大小尽量一样 Tab顺序、控件长度高度、控件停靠、自动伸缩... -
winform程序运行之后没有窗口弹出来怎么解决
2019-05-10 18:18:37求助!...透明度100,application设置没问题,form窗体的位置也没问题。是运行了之后根本没有窗体那个程序弹出来,我不知道哪儿出错了,系统也没报错。 运行之后根本没有程序弹出来啊,求解!... -
Winform编程中定制窗体标题栏
2010-09-28 21:50:00标题栏是否好看关系到软件的美观度,和用户体验,由于Winform的特殊原因,想实现皮肤是件很不爽的事情,但是偶尔做些小软件又不想看到windows讨厌的标题栏,我的方法就是重新设计标题栏,然后用图片做背景,设置所有... -
C# winform典型系统开发模板
2011-09-17 15:13:2110.2.4 通过控制窗体透明度实现日历透明显示效果 231 10.2.5 拖动无标题栏窗体 232 10.2.6 将窗体的关闭位置写入到注册表中 232 10.2.7 将程序图标写入到托盘 232 10.3 设计过程 233 ... -
C# WinForm 实现窗体渐显效果
2013-11-06 22:23:57这个属性代表的是窗体的不透明度级别。在通过添加timer 控件来实现这个渐显的过程。 具体代码如下,直接复制和粘贴就可以了,是不是很简单方便。 /// /// 实现窗体渐显的效果,采用Opacity来实现 /// -
ZedGraph winform打印 统计报表 打印组建 统计组件.NET2.0
2010-08-23 14:36:09ColorOpacity 透明度 IsScaled 设置X轴标题字体显示大小是否根据图的比例放大缩小 RangeMax 填充时候的最大倾斜度(有过渡色,没试过) RangeMin 填充时候的最小倾斜度(有过渡色,没试过) StringAlignment X轴标题... -
Winform:关于IM好友列表
2009-07-12 09:45:00一年多以前写了那篇透明的Listview,而现在这一控件的做法,跟那个也是一样的道理 先说ListviewItem吧 我们可以把每一个Item看成一个实体,里面有她的各种属性,包括头像,高度,妮称,状态等等….懒得COPY代码,贴了老是... -
winform菜单栏、快捷菜单、右键弹出式菜单基本操作-洋葱先生-杨少通
2020-09-18 20:14:02③通过主菜单修改不透明度后,右键菜单“不透明”不勾中,选择“不透明”后,系统不透明,且菜单变为勾中。 ④需拖拽控件MenuStrip(菜单栏)、ToolStrip(快捷菜单栏)、ContextMenuStrip(右键弹出式菜单)。 ⑤控 -
如何让PictureBox背景色透明
2017-12-26 16:21:00winform程序中的PictureBox载入了一张带有透明度的PNG图片,悬浮于其他控件之上,但是它的背景不是透明的,即使把它的BackColor设置为Color.Transparent,或者是0x00000000,它仍然具有背景色,它似乎仅对form的背景... -
WM 实现透明效果
2009-04-08 15:14:00.NET Framework的WinForm程序支持支持调节控件的透明度和GDI+,用它可以实现例如淡入淡出这种很酷的界面效果。而.NET Compact Framework的窗体和控件不支持透明和GDI+,因此常常利用图片来完成一些美观的程序界面...