精华内容
下载资源
问答
  • winform panel控件背景透明 在网页中通过div+css实现半透明效果不难,今天我们看看一种在winfrom中实现的方法
  • winform自定义的透明背景的panel,可以覆盖在其他控件上,然后在该透明panel上做绘图、点击获取坐标等操作。
  • 以pictureBox控件上label控件为例,设置label控件背景透明,可以看到pictureBox控件背景色。
  • C#WinForm开发:如何将控件背景色设置为透明引言关于透明实现步骤常见问题 引言 在项目开发中,有时需要将控件的背景颜色设置为透明,比如label控件。那么,如何将控件的背景颜色设置为透明?是不是只要将控件的...

    C#WinForm开发:如何将控件背景色设置为透明

    1. 引言

    在项目开发中,有时需要将控件的背景颜色设置为透明,比如label控件。那么,如何将控件的背景颜色设置为透明?是不是只要将控件的BackColor属性设为Transparent即可?答案是否定的。想要解决这个问题,首先要了解:在C#中,什么叫做透明。

    2. 关于透明

    在C#中,所谓的透明就是将父控件表面的颜色设定为自己的背景颜色。因此,在WinForm开发中除了要将控件的BackColor属性设为Transparent,还要修改控件的Parent属性。

    2. 实现步骤

    以pictureBox控件上label控件为例,设置label控件的背景色透明,可以看到pictureBox控件的背景色。

    1. 设置label控件的BackColor属性为Transparent:
    label1.BackColor = Color.Transparent;
    
    1. 设置label控件的Parent属性为pictureBox:
    label1.Parent = pictureBox1;
    
    1. 设置label控件的Location属性,这里是将label控制位置设于pictureBox控件的左上角:
    label1.Location = new Point(0, 0);
    

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

    4. 常见问题

    1. 问:为什么将label控件的背景色设为透明,透过背景看到的不是pictureBox控件的背景色,而是Form窗体的背景色?
      答:label控件的父控件默认是Form窗体,因此需要更改label控件的Parent属性为pictureBox。
    2. 问:为什么将label控件的Parent属性设置为pictureBox后,程序运行时发现label控件不见了,或者显示的位置不在拖放的位置?
      答:label控件的父控件默认是Form窗体,所以控件拖放时的Location属性是相对于Form窗体的左上角。当程序运行时,label父控件变更为pictureBox控件,那么一开始拖放的Location属性将是相对于pictureBox左上角,即导致label控件的显示位置不在最初拖放位置,甚或消失不见,因此需要根据情况更改label控件的Location属性。
    展开全文
  • WinForm 实现半透明控件

    热门讨论 2012-09-19 23:13:59
    透明控件,包括直线,矩形,五角星等简单图形,还有实现了图片控件的半透效果
  • 怎么实现控件之间的透明,不是背景透明,像这样 ![图片说明](https://img-ask.csdn.net/upload/201603/16/1458123306_820051.png) 看过一个方法,但是我的控件可以拖动,用这种方法拖动的时候图形会变形(这种方法...
  • 如何将控件背景色设置为透明 ①将属性BackColor设置为Web--Transparent ②将属性FlatStyle设置为Flat 如果想将边框去掉: 将属性FlatAppearance下的BorderSize设置为0 转载于:...

    如何将控件的背景色设置为透明

    ①将属性BackColor设置为Web--Transparent

    ②将属性FlatStyle设置为Flat

    如果想将边框去掉:

    将属性FlatAppearance下的BorderSize设置为0

    转载于:https://www.cnblogs.com/1016391912pm/p/11507181.html

    展开全文
  • 使用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窗口中点击查询等待时的页面加载遮罩效果,背景透明,结果返回前被遮罩的控件不可用。 有问题可留言http://blog.csdn.net/quan278905570
  • winform实现透明控件

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

    前言

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

    最后

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

    展开全文
  • 会直接报错,并且提示控件不支持透明背景色,此时要执行下面一句代码即可: this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); 该句代码的作用就是指示控件背景色可以支持透明
  • winform 控件背景色设置成透明

    千次阅读 2013-11-14 17:37:27
    点击BackColor属性的下拉例表,->选择Web选项卡->选择Transparent,也就是Web选项卡里的第一个.
  • Winform窗体半透明控件不透明,及窗体美化效果
  • winform 改变图片透明
  • 在使用winform写界面的时候,要想label这种控件实现对背景透明,并且也懒得每次拖动一次控件都要在后台写一遍label1.Parent=PictureBox1 那么下面方法就介绍了比较简单便捷的方法,在开始搭建界面的时候就要做好...
  • 本文实例讲述了WinFrom中label背景透明的实现方法,在应用程序开发中有着不错的实用价值。分享给大家供大家参考。具体实现方法如下: 使用: lblPstart.BackColor=Color.Transparent; 就可以让lable控件的背景色...
  • Winform透明控件

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

    万次阅读 2012-07-06 15:52:23
    已经很少做winform程序了,最新参与了一个小项目,遇到了控件背景透明的功能要求,特在此总结一下,供有需要的同行参考。 0、背景透明的概念和分类 背景透明是啥意思呢,就是背景透明。哈哈,废话了。其实你想...
  • 控件支持透明色 16 this .SetStyle(ControlStyles.SupportsTransparentBackColor, true ); 17 } 18 19 #region designer 20 /// 21 /// 必需的设计器变量。 22 /// 23...
  • C#自定义控件背景透明的方法

    热门讨论 2012-06-07 08:49:25
    解决自定义控件不透明的方法。I struggled for ages with the problem of having controls show through a control that was painted on top of them. It seems that ControlStyles.SupportsTransparentBackColor ...
  • WinForm例子\控件透明背景及自定义控件实现无边框按钮和可加背景的表格控件
  • C# winform 控件背景颜色自定义RGB 值

    万次阅读 2018-11-06 11:22:45
    C# winfrom 控件背景颜色自定义RGB 值 先找到我们控件的属性栏,找到backcolor处,直接写上你的rgb就行了。如果需要加透明就是用的argb :属性栏设置如图: 还可以通过代码设置:如下: Color.FromArgb(255,219,73)...
  • 有关如何将winform的PictureBox控件背景图多余白边设置为透明 如图所示: PictureBox控件如果直接这样叠加,原本png图片没有像素的边角会变成白色填充 只需要设置该图片的父容器为背景的Picture控件,并修改该控件...
  • 用C# winform开发界面时会遇到很多小问题,首先贴透明的png图片后,图片无法透明,这点可以通过属性设置:外观/BackColor (Web TransParent)可以解决。  但当用多个控件时,如PictureBox,控件都贴png透明图片...
  • winform设置透明图片

    2021-05-28 12:59:04
    效果图如上,第二张图片就是透明的,分两个步骤 1.BackColor设置Transparent 2.在Form_Load方法里面指定 pictrueBox的父控件 private void Form5_Load(object sender, EventArgs e) { this.pictureBox2....
  • C# Winform 变相实现背景透明

    千次阅读 2016-08-30 14:51:36
    C# Winform 变相实现背景透明 本人在写一个C# Winform项目时,窗体背景使用了背景图,但是窗体上的部分控件不支持背景透明,这样显得有些不好看,然后在Google时发现如下变相实现背景透明的方法
  • C#Winform透明Textbox控件

    热门讨论 2009-04-30 15:02:03
    一个背景透明Textbox控件的源代码,很不错的东西
  • Textbox背景透明(winform)

    热门讨论 2009-12-23 17:15:35
    最近在做Winform(C#)的项目,需要设置Textbox的背景颜色为透明,但是Textbox不支持透明的属性.在codeproject上找到了一个外国重写的类

空空如也

空空如也

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

winform控件背景透明