browser 侵权问题
  • 如网站内容存在侵权行为
    请及时联系我们进行删除

browser 广告
browser 公告
  • 通知:《2Trio游戏盒》已暂停服务,如需继续使用请下载
    纽扣加加-www.buttonpp.com


    关于网站部分程序无法使用

    随着时间的流失,部分软件可能因为时间太长,导致下载后需要更新无法使用,请大家尽量下载最近日期的。


    本站软件来源以及说明

    本站软件来自网络收集以及游客投稿,由于大部分软件为非官方版本的第三方修改版软件,更新速度比不上官方版本,请见谅。大家请支持正版,购买注册,得到更好的正版服务。


    蓝奏云链接打不开

    比如:lanzous最后面的数字改成X即可


    为什么下的文件会报毒?

    很多时候下载的软件被杀毒软件拦截了,大部分软件都为易语言开发误报很正常。


    拒绝白嫖从我做起

    本站所有需要下载的资源都需要先在界面回复才能看到下载地址

winform窗体透明背景实现

Root
2021-12-25 / 0 评论 / 16 阅读 / 正在检测是否收录...

因为winform Form窗体的局限性,不允许设置背景色为transparent。所以不能实现透明背景。
这里有一个取巧的方法(截Form后的背景)。
首先来看下实现效果:
1
想要实现半透明效果只要加个panel ,将panel设置为背景色透明,然后加个遮罩图片就可以了。
2

以下附上实现代码:

using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsTrans
{
    public partial class Form1 : Form
    {
        private Color tr_color = Color.Transparent;
        private bool b_start = false;
        bool[] b_visible = null;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            SetBackgroundImageTransparent();
        }
        private void SetBackgroundImageTransparent()
        {
            Point pt = this.PointToScreen(new Point(0, 0));
            Bitmap b = new Bitmap(this.Width, this.Height);
            using (Graphics g = Graphics.FromImage(b))
            {
                g.CopyFromScreen(pt, new Point(), new Size(this.Width, this.Height));
            }

            this.BackgroundImage = b;
        }
        private void BeginSet()
        {
            tr_color = this.TransparencyKey;
            b_start = true;
        }
        private void Setting()
        {
            if (b_start)
            {
                b_visible = new bool[Controls.Count];
                for (int i = 0; i < Controls.Count; i++)
                {
                    b_visible[i] = Controls[i].Visible;
                    Controls[i].Visible = false;
                }
                BackgroundImage = null;
                BackColor = Color.White;
                b_start = false;
                this.TransparencyKey = Color.White;
            }
        }
        private void EndSet()
        {
            SetBackgroundImageTransparent();
            this.TransparencyKey = tr_color;
            for (int i = 0; i < Controls.Count; i++)
            {
                Controls[i].Visible = b_visible[i];
            }
            b_start = false;
        }

        private void Form1_Resize(object sender, EventArgs e)
        {
            Setting();
        }
        private void Form1_ResizeBegin(object sender, EventArgs e)
        {
            BeginSet();
        }
        private void Form1_ResizeEnd(object sender, EventArgs e)
        {
            EndSet();
        }
        private void Form1_Move(object sender, EventArgs e)
        {
            Setting();
        }
    }
}
0

评论 (0)

取消