精华内容
下载资源
问答
  • 第一个参数代表透明度,数值在0-255之间 在***.Designer.cs中加入以下代码 this.OpenFileButton.BackColor = System.Drawing.Color.FromArgb(255, Color.Crimson); this.NextButton.BackColor = System.Drawing....

    使用方法:Color.FromArgb(Int32,Color)
    第一个参数代表透明度,数值在0-255之间
    在这里插入图片描述
    选中button将属性“FlatStyle”设置为:“Flat”

    在***.Designer.cs中加入以下代码

    this.OpenFileButton.BackColor = System.Drawing.Color.FromArgb(255, Color.Crimson);
    this.NextButton.BackColor = System.Drawing.Color.FromArgb(100, Color.Crimson);  
    

    在这里插入图片描述
    在这里插入图片描述
    效果图:
    在这里插入图片描述

    展开全文
  • winform 透明控件

    2011-11-25 11:31:07
    winform 透明控件 C# .net
  • 使用BackColor=Color.Translate这种方法只能实现和背景色一样但是不是真的透明控件后面的控件还是看不到 1.首先写一个基类 using System; using System.Collections.Generic; using System.Text; using System....

    使用BackColor=Color.Translate这种方法只能实现和背景色一样但是不是真的透明,控件后面的控件还是看不到

    1.首先写一个基类

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows.Forms;
    using System.Drawing;
    using System.ComponentModel;
     
    namespace CYControls
    {
        /// <summary>
        /// 提供透明和旋转功能的基础控件
        /// </summary>
        public class CYBaseControl : Control
        {
            private float _iBorderThickness = 1f;
            private float _iOpacity = 1f;
            private Brush _brushBg = null;
            private Pen _penFg = null;
     
            public CYBaseControl()
            {
                this.SetStyle(ControlStyles.SupportsTransparentBackColor |
                    ControlStyles.Opaque, true);
                this.BackColor = Color.Transparent;
                BackgroundBrush = Brushes.Transparent;
                ForegroundPen = Pens.Black;
            }
     
            #region Propertys
            #region HideParent
            [Browsable(false)]
            [EditorBrowsable(EditorBrowsableState.Never)]
            public override string Text
            {
                get { return base.Text; }
                set { base.Text = value; }
            }
     
            [Browsable(false)]
            [EditorBrowsable(EditorBrowsableState.Never)]
            public override Image BackgroundImage
            {
                get { return base.BackgroundImage; }
                set { base.BackgroundImage = value; }
            }
     
            [Browsable(false)]
            [EditorBrowsable(EditorBrowsableState.Never)]
            public override ImageLayout BackgroundImageLayout
            {
                get
                {
                    return base.BackgroundImageLayout;
                }
                set
                {
                    base.BackgroundImageLayout = value;
                }
            }
            #endregion
     
            public override Color BackColor
            {
                get
                {
                    return base.BackColor;
                }
                set
                {
                    base.BackColor = value;
                    ResetBgBrush();
                }
            }
     
            //[EditorAttribute(typeof(BrushTypeEditor), typeof(System.Drawing.Design.UITypeEditor))]  
            //public double Background
            //{
            //    get;
            //    set;
            //}
     
            public override Color ForeColor
            {
                get
                {
                    return base.ForeColor;
                }
                set
                {
                    base.ForeColor = value;
                    ResetFgPen();
                }
            }
     
            public float BorderThickness
            {
                get { return _iBorderThickness; }
                set
                {
                    if (value < 0)
                    {
                        throw new Exception("Out off range");
                    }
                    _iBorderThickness = value;
                    ResetFgPen();
                    ResetDrawRect();
                }
            }
     
            public virtual float RotateAngle
            {
                get;
                set;
            }
     
     
            public float Opacity
            {
                get { return _iOpacity; }
                set
                {
                    if (value > 1 || value < 0)
                    {
                        throw new Exception("Out of range,the Value be in [0,1]");
                    }
                    else
                    {
                        _iOpacity = value;
                        ResetBrushes();
                    }
                }
            }
     
            protected override CreateParams CreateParams
            {
                get
                {
                    CreateParams cp = base.CreateParams;
                    cp.ExStyle = 0x20;
                    return cp;
                }
            }
     
            protected virtual Brush BackgroundBrush
            {
                get { return _brushBg; }
                set { _brushBg = value; }
            }
     
            protected virtual Pen ForegroundPen
            {
                get { return _penFg; }
                set { _penFg = value; }
            }
     
            protected virtual RectangleF DrawRect
            {
                get;
                set;
            }
            #endregion
     
            #region Methods
            protected override void OnPaint(PaintEventArgs e)
            {
                base.OnPaint(e);
                e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            }
     
            protected override void OnSizeChanged(EventArgs e)
            {
                base.OnSizeChanged(e);
                ResetDrawRect();
            }
            protected override void OnPaddingChanged(EventArgs e)
            {
                base.OnPaddingChanged(e);
                ResetDrawRect();
            }
     
            protected void ResetBrushes()
            {
                ResetBgBrush();
                ResetFgPen();
            }
     
            protected void ResetBgBrush()
            {
                BackgroundBrush = new SolidBrush(GetOpacityColor(BackColor, Opacity));
            }
     
            protected void ResetFgPen()
            {
                ForegroundPen = new Pen(GetOpacityColor(ForeColor, Opacity), BorderThickness);
            }
     
            protected Color GetOpacityColor(Color baseColor, float op)
            {
                return Color.FromArgb(Convert.ToInt32(op * baseColor.A), baseColor);
            }
     
            private void ResetDrawRect()
            {
                float dbwidth = 2 * BorderThickness;
                float halfwidth = BorderThickness / 2;
                int paddingWhith = Padding.Left   Padding.Right;
                int paddingHeight = Padding.Top   Padding.Bottom;
                if (dbwidth > Width - paddingWhith || dbwidth > Height - paddingHeight)
                {
                    DrawRect = this.Bounds;
                }
                else
                {
                    DrawRect = new RectangleF(Padding.Left   halfwidth,
                        Padding.Top   halfwidth,
                        Width - BorderThickness - paddingWhith,
                        Height - BorderThickness - paddingHeight);
                }
            }
            #endregion
        }
    }

    2.创建RectangleShape

    public class RectangleShape:CYBaseControl
    {
        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            base.OnPaint(e);
            e.Graphics.FillRectangle(BackgroundBrush,this.ClientRectangle);
            e.Graphics.DrawRectangle(ForegroundPen,Rectangle.Round(this.DrawRect));
        }
    }

    3.应用实例

    RectangleShape recS=new RectangleShape ();
    recS.Name="TestShape";
    recS.Height=100;
    recS.Width=100;
    recS.BackColor=Color.Transparent;
    recS.Location=new Point(0,0);
    //设置透明度
    recS.Opacity=0.5F;
    //把自定义的这个控件添加到需要的容器中
    **.Controls.Add(recS);

     

     

    展开全文
  • winform panel控件背景透明 在网页中通过div+css实现半透明效果不难,今天我们看看一种在winfrom中实现的方法
  • C# WinForm 透明控件 PictureBox透明

    万次阅读 2014-07-30 13:27:48
    1.要实现C# WinForm中的控件与背景的透明,可以通过设置控件的BackColor属性为Transparent,同时设置其父控件。因为在C#中,控件透明指对父窗体透明。如果不设置Parent属性,那么控件将只对Form透明,显示的时候...
    1.要实现C# WinForm中的控件与背景的透明,可以通过设置控件的BackColor属性为Transparent,同时设置其父控件。因为在C#中,控件的透明指对父窗体透明。如果不设置Parent属性,那么控件将只对Form透明,显示的时候都会把Form的背景色(默认为Control)重刷一遍作为自己的背景。
    2.在控件比较多的情况下,可以使用Panel控件,将某一组的控件都放到Panel中,然后只对此panel设置背景透明即可,则其他控件都跟着实现了背景透明。
    demo:
    现有一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透明控件

    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

    展开全文
  • Winform使用自定义WPF控件设置图片透明度样例: 点击1加载图片,点击2设置透明度0.1,点击3设置透明度0.9;
  • C#之winform设置控件居中

    万次阅读 2017-02-13 01:48:56
    在C#的窗体编程,winfrom里面,原生控件卧槽般的坑爹,没有居中这种属性,这是很恶心的一件事情。对比java的窗体,有不少布局是支持设置居中的,android更不用说。而winfrom这家伙没有。虽然java的窗体很丑很丑很丑...
  • winform 控件透明设置

    千次阅读 2018-06-04 14:52:00
    1.backcolor属性为color.FromArgb(100, 220, 220, 220); 2.全透明设置为transparent方法。 转载于:https://www.cnblogs.com/gaara-zhang/p/9133335.html
  • winform 控件透明

    2014-04-11 22:02:08
    要实现C# WinForm中的控件与背景的透明,可以通过设置控件的BackColor属性为Transparent,同时设置其父控件。因为在C#中,控件透明指对父窗体透明。 如果不设置Parent属性,那么控件将只对Form透明,显示的时候...
  • 可在目标控件上显示或隐藏半透明遮罩层,支持透明度和颜色自定义,支持在遮罩层上显示自定义文本,文本颜色可调。已封装有x86/x64/AnyCpu三种dll,使用时引用相应的dll调用相关方法即可,方法参数说明已以截图形式放...
  • 请注意这个透明并不是真正的透明,而是用父控件的当前位置的颜色填充PictureBox内的相应位置的颜色。 如果你有两个叠加的pictureBox,则实现互相透明是不行的。 如上高亮所示,我们都会试着设置背景为Transparent,...
  • 主要介绍了C# WinForm控件透明图片重叠时出现图片不透明的简单解决方法,结合实例形式分析了WinForm图片重叠后造成图片不透明的原因与相应的解决方法,需要的朋友可以参考下
  • 给绘制加个样式 代码 protectedoverrideCreateParamsCreateParams{get{CreateParamscp=base.CreateParams; //WS_EX_TRANSPARENTcp.ExSt...
  • WINFORM 自定义控件,类似做一个半透明的遮罩层。 就是在加载数据或是做一些比较耗时的操作,就显示这个控件,置于顶层,让用户点不到别的控件,防止误操作。 重写控件的ONPAINT事件来自己绘制UI。 在设置构造...
  • 1.要实现C# WinForm中的控件与背景的透明,可以通过设置控件的BackColor属性为Transparent,同时设置其父控件。因为在C#中,控件透明指对父窗体透明。如果不设置Parent属性,那么控件将只对Form透明,显示的时候...
  • winform 自定义控件:半透明Loading控件 by wgscd date:2015-05-05 效果: using System;using System.Drawing;using System.Windows.Forms;using System.ComponentModel;using System.Threading; ...
  • 怎么实现控件之间的透明,不是背景透明,像这样 ![图片说明](https://img-ask.csdn.net/upload/201603/16/1458123306_820051.png) 看过一个方法,但是我的控件可以拖动,用这种方法拖动的时候图形会变形(这种方法...
  • 简单的视频播放前置透明窗口控件,提供鼠标点击,拖动事件,也可用于字符叠加(好像过于简单了,有问题的话来问我好了-笑)。
  • 如何将控件的背景色设置透明 ①将属性BackColor设置为Web--Transparent ②将属性FlatStyle设置为Flat 如果想将边框去掉: 将属性FlatAppearance下的BorderSize设置为0 转载于:...
  • WinForm 实现半透明控件

    热门讨论 2012-09-19 23:13:59
    透明控件,包括直线,矩形,五角星等简单图形,还有实现了图片控件的半透效果
  • winform实现透明控件

    千次阅读 2019-01-17 17:39:46
    但是,winform项目的控件透明都是将父控件的图像绘制成子控件的背景来实现的,这种透明存在很大的问题,不合格。 然后,我想到wpf在透明这块做的比较好,想是不是可以在winform中使用wpf控件来实现,结果发现还是走...
  • 但是在窗体加载时,每次自定义控件都会先变成透明,卡顿一下后才会显示出来 设计器里的效果: 卡顿后的效果: 解决办法: 在使用自定义控件的窗体代码中重写下面的方法: protected override ...
  • 平时用的的确确是少,回来想起来已经忘记了不下3次了,搞得每次都...比如在PictureBox 上面放置一个背景透明的Label,做法可如下: label1.Parent = pictureBox1; //设定Label 的父控件为PictureBox label1.Back...
  • MAC风格的半透明超酷WinForm Button控件源码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,602
精华内容 1,440
关键字:

winform设置控件透明