精华内容
下载资源
问答
  • winform 控件透明

    2014-04-11 22:02:08
    要实现C# WinForm中的控件与背景的透明,可以通过设置控件的BackColor属性为Transparent,同时设置其父控件。因为在C#中,控件透明指对父窗体透明。 如果不设置Parent属性,那么控件将只对Form透明,显示的时候...
    要实现C# WinForm中的控件与背景的透明,可以通过设置控件的BackColor属性为Transparent,同时设置其父控件。因为在C#中,控件的透明指对父窗体透明。
    如果不设置Parent属性,那么控件将只对Form透明,显示的时候都会把Form的背景色(默认为Control)重刷一遍作为自己的背景。
    在控件比较多的情况下,可以使用Panel控件,将某一组的控件都放到Panel中,然后只对此panel设置背景透明即可,则其他控件都跟着实现了背景透明。
    如,现有一PictureBox控件,十多个Label以及Button,那么只将这些Label和Button放入Panel中。同时在Form_Load事件中加入如下代码即可实现背景透明:
       this.picturebox1.SendToBack();//将背景图片放到最下面
       this.panel1.BackColor = Color.Transparent;//将Panel设为透明
       this.panel1.Parent = this.picturebox1;//将panel父控件设为背景图片控件
       this.panel1.BringToFront();//将panel放在前面
    以上代码即可实现所有的控件都对PictueBox背景图片透明
    展开全文
  • WINFORM 自定义控件,类似做一个半透明的遮罩层。 就是在加载数据或是做一些比较耗时的操作,就显示这个控件,置于顶层,让用户点不到别的控件,防止误操作。 重写控件的ONPAINT事件来自己绘制UI。 在设置构造...
  • 我想让一个treeview透明,于是做了个用户控件继承了treeview,在构造函数里加了透明的代码 SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.SupportsTransparentBackColor, true); this...
  • 可在目标控件上显示或隐藏半透明遮罩层,支持透明度和颜色自定义,支持在遮罩层上显示自定义文本,文本颜色可调。已封装有x86/x64/AnyCpu三种dll,使用时引用相应的dll调用相关方法即可,方法参数说明已以截图形式放...
  • 主要介绍了C# WinForm控件透明图片重叠时出现图片不透明的简单解决方法,结合实例形式分析了WinForm图片重叠后造成图片不透明的原因与相应的解决方法,需要的朋友可以参考下
  • 1.backcolor属性为color.FromArgb(100, 220, 220, 220); 2.全透明设置为transparent方法。 转载于:https://www.cnblogs.com/gaara-zhang/p/9133335.html

    1.backcolor属性为color.FromArgb(100, 220, 220, 220);

    2.全透明设置为transparent方法。

    转载于:https://www.cnblogs.com/gaara-zhang/p/9133335.html

    展开全文
  • winform 透明控件

    2011-11-25 11:31:07
    winform 透明控件 C# .net
  • winform实现透明控件

    千次阅读 2019-01-17 17:39:46
    但是,winform项目的控件透明都是将父控件的图像绘制成子控件的背景来实现的,这种透明存在很大的问题,不合格。 然后,我想到wpf在透明这块做的比较好,想是不是可以在winform中使用wpf控件来实现,结果发现还是走...

    前言

    由于项目需求需要用到透明控件。但是,winform项目的控件透明都是将父控件的图像绘制成子控件的背景来实现的,这种透明存在很大的问题,不合格。
    然后,我想到wpf在透明这块做的比较好,想是不是可以在winform中使用wpf控件来实现,结果发现还是走不通,由于elementhost控件是winform中的控件,而wpf控件必须要用它来承载才能在winform中实现,不合格。
    最后,百度发现了使用Region实现透明控件,Region透明控件主要是设置控件的绘制区域来实现的透明控件,所以也不能说是透明控件,只能说是只绘制控件的非透明部分来达到透明的效果,不过基本能够满足我的需求。效果图如下:
    透明控件

    最后

    这个存在的问题是未绘制区域,就无法触发控件的点击事件,点击的时候会直接点击到后面的控件上。目前没有找到更好的实现方法,之前百度的时候看到有说最好的办法是使用directx重写控件,不过这个方法对本人来说有点复杂了。如果大家有更好的实现方法,欢迎交流。

    展开全文
  • Winform透明控件

    2019-09-18 05:51:31
    最新做一个项目,使用的是Winform,碰到一个问题,需要在后台执行某项任务的时候,画面显示“处理中”这样的半透明遮罩,Web项目中可以使用DIV(Css半透明),或者Wpf项目的话本身控件支持真透明(直接与DirectX进行...

    最新做一个项目,使用的是Winform,碰到一个问题,需要在后台执行某项任务的时候,画面显示“处理中”这样的半透明遮罩,Web项目中可以使用DIV(Css半透明),或者Wpf项目的话本身控件支持真透明(直接与DirectX进行交互),而Winform本身控件并不支持真正的透明,经过各种调查还是没有解决这个问题。

    在网上查到的结果主要有两种。

    1.指定ControlStyles。

    // 摘要: 
        //     指定控件的样式和行为。
        [Flags]
        public enum ControlStyles     {
           ...
            // 摘要: 
            //     如果为 true,则控件被绘制为不透明的,不绘制背景。
            Opaque = 4,
             //
            // 摘要: 
            //     如果为 true,控件接受 alpha 组件小于 255 的 System.Windows.Forms.Control.BackColor 以模拟透明。仅在
            //     System.Windows.Forms.ControlStyles.UserPaint 位设置为 true 并且父控件派生自 System.Windows.Forms.Control
            //     时才模拟透明。
            SupportsTransparentBackColor = 2048
           ...
        }

    在控件的构造函数中,指定样式。

    public MyControl
    {
       SetStyle(ControlStyles.Opaque | 
                ControlStyles.AllPaintingInWmPaint | 
                ControlStyles.UserPaint, true);
    }
    

    其中Opaque代表强制不画背景,

    剩下的AllPaintingInWmPaint和UserPaint只是为了增强描画的效率。

    当然如果为了实现自己的效果,还需要重写描画函数。

    /// <summary>
            /// 自定义绘制窗体
            /// </summary>
            /// <param name="e"></param>
            protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
            {
                float vlblControlWidth;
                float vlblControlHeight;
    
                Pen labelBorderPen;
                SolidBrush labelBackColorBrush;
    
                Color drawColor = Color.FromArgb(this._alpha, Color.Black);
                labelBorderPen = new Pen(drawColor, 0);
                labelBackColorBrush = new SolidBrush(drawColor);
    
                vlblControlWidth = this.Size.Width;
                vlblControlHeight = this.Size.Height;
                e.Graphics.DrawRectangle(labelBorderPen, 0, 0, vlblControlWidth, vlblControlHeight);
                e.Graphics.FillRectangle(labelBackColorBrush, 0, 0, vlblControlWidth, vlblControlHeight);
    
                base.OnPaint(e);
            }

    到此为止,程序运行的效果如下:

    为了显示出控件的透明效果,透明度被固定的设置为了125,背景色为黑色,在这招下面放了2个按钮,OK,看起来很完美。但是。。。因为强制不描绘,如果使用Alt + Tab进行画面切换的话。。。,就变成了以下这个样子。。。

    嗯?你问我这个是什么?没错,这个就是刚才的那个半透明遮罩,我只不过用Alt + tab切换到了Visual Studio, 然后又切换回来而已。在切换到Alt + tab之后,切换到Visual Studio的时候画面背景进行了重画(指的VisualStudio的窗口),这个之后,再次切换回Form1,由于强制控件不描画背景,就变成了上面的这个样子。不要告诉我“那你不要切换画面就好了”,反正我做不到。

    还有上面写道的ControlStyles里面有一个SupportsTransparentBackColor,在控件构造函数中指定,并且将控件的BackGroundColor设置成Transparent,控件只是得到了支持父容器的透明,简单说,如果父容器中没有其他控件的话,可以得到透明效果,但是,如果父容器中含有其他的控件,就会失去透明效果,也可以说这是一种“假透明”。

    2.重写CreateParams 

    protected override CreateParams CreateParams
    {
        get
        {
    	CreateParams cp = base.CreateParams;
    	// 开启 WS_EX_TRANSPARENT,使控件透明
    	cp.ExStyle |= 0x20;  
    	return cp;
        }
    }

    这个其实和1方法是大同小异, 个人觉得还不如第一个,也许是因为考虑不够周全,使用这种办法实现透明的时候,不仅在1中提到的问题没有得到解决,并且在拖动时还会有边界阴影的问题。

    综上所述,我没有找到根本的解决控件透明的解决办法,社区里面的各位高手,如果您已经解决了上述的问题,或者您

     

    转载于:https://my.oschina.net/u/2966716/blog/760603

    展开全文
  • 用C# winform开发界面时会遇到很多小问题,首先贴透明的png图片后,图片无法透明,这点可以通过属性设置:外观/BackColor (Web TransParent)可以解决。  但当用多个控件时,如PictureBox,控件都贴png透明图片...
  • winform控件

    2012-08-07 10:58:09
    自己总结的一些winform空间运用 包括透明TextBox 透明Button 类似360按钮的玻璃按钮 窗体淡出效果 winform皮肤运用,运用时记得看每个文件夹下的Readme,根据里面的步骤在项目中创建自己的用户控件,然后就可以用了 ...
  • C# WinForm 透明控件 PictureBox透明

    万次阅读 2014-07-30 13:27:48
    1.要实现C# WinForm中的控件与背景的透明,可以通过设置控件的BackColor属性为Transparent,同时设置其父控件。因为在C#中,控件透明指对父窗体透明。如果不设置Parent属性,那么控件将只对Form透明,显示的时候...
  • 使用BackColor=Color.Translate这种方法只能实现和背景色一样但是不是真的透明控件后面的控件还是看不到 1.首先写一个基类 using System; using System.Collections.Generic; using System.Text; using System....
  • 在使用winform写界面的时候,要想label这种控件实现对背景色透明,并且也懒得每次拖动一次控件都要在后台写一遍label1.Parent=PictureBox1 那么下面方法就介绍了比较简单便捷的方法,在开始搭建界面的时候就要做好...
  • 但当用多个控件时,如PictureBox,控件都贴透明图片后,两个PictureBox有重叠的地方,希望重叠的地方能透明,就是透视下面的控件部分,结果测试后发现两控件重叠透明的地方对整个框架的背景透明,但对...
  • winform panel控件背景透明 在网页中通过div+css实现半透明效果不难,今天我们看看一种在winfrom中实现的方法
  • Winform中如果将一个透明图片放在窗体上能正常显示透明,但是如果将该图片放在另一个控件上会导致不能显示透明效果。 解决这种情况,可以采取在控件上使用GDI+绘画出透明图片。 这里我们就以一个pictureBox2控件...
  • Winform中如果将一个透明图片放在窗体上能正常显示透明,但是如果将该图片放在另一个控件上会导致不能显示透明效果。 解决这种情况,可以采取在控件上使用GDI+绘画出透明图片。 这里我们就以一个pictureBox2控件...
  • C#实现透明WinForm控件

    2014-04-01 18:40:45
    public partial class tspControl : UserControl { public tspControl() { InitializeComponent(); SetStyle(ControlStyles.SupportsTransparentBackColor
  • winform自定义的透明背景的panel,可以覆盖在其他控件上,然后在该透明panel上做绘图、点击获取坐标等操作。
  • 透明窗体上显示标准Winform控件

    千次阅读 2011-03-21 19:21:00
    可惜的是这种窗体与Winform体系的本质冲突导致其不能与标准Winform控件共同工作。Google到的解决方案多是使用双窗体来解决,不过本着技术研究的精神,我尝试设计了另一种让此二者共存的方案。 Winform绘图过程简要...
  • public class CYBaseControl : Control ...层叠控件时绘制顺序会乱掉,可能是我绘制绘制控件的时候没有做判断顺序的原因 转载于:https://www.cnblogs.com/linji/archive/2012/09/20/2694649.html
  • 支持标准Winform控件透明窗体,支持半透明PNG背景图,非双窗体技术的另一种实现方案。 含源代码
  • winform 控件背景色设置成透明

    千次阅读 2013-11-14 17:37:27
    点击BackColor属性的下拉例表,->选择Web选项卡->选择Transparent,也就是Web选项卡里的第一个.

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 319
精华内容 127
关键字:

winform控件透明