• 大小: 165KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: C#
  • 标签:

资源简介

C# Winform 实现不规则窗体的例子:UpdateLayeredWindow 方式和 GraphicsPath 方式效果对比。

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TransparentForm
{
    public partial class GraphicsPathForm : Form
    {
        public GraphicsPathForm()
        {
            InitializeComponent();
        }
        private void GraphicsPathForm_Load(object sender EventArgs e)
        {
            TopMost = true;//设置为最顶层
            FormBorderstyle = FormBorderstyle.None;//取消窗口边框
            this.Region = new Region(GetWindowRegion(new Bitmap(BackgroundImage)));//设置不规则窗体
            FormMovableEvent();//设置拖动窗体移动
        }
        #region 设置不规则窗体
        private GraphicsPath GetWindowRegion(Bitmap bitmap)
        {
            Color TempColor;
            GraphicsPath gp = new GraphicsPath();
            if (bitmap == null) return null;

            for (int nX = 0; nX < bitmap.Width; nX++)
            {
                for (int nY = 0; nY < bitmap.Height; nY++)
                {
                    TempColor = bitmap.GetPixel(nX nY);
                    //if (TempColor.A != 0)//如果颜色不是全透明
                    if (TempColor.A == 255)//如果颜色带有透明
                    {
                        gp.AddRectangle(new Rectangle(nX nY 1 1));
                    }
                }
            }
            return gp;
        } 
        #endregion
        #region 无标题栏的窗口移动
        private Point mouseOffset; //记录鼠标指针的坐标
        private bool isMouseDown = false; //记录鼠标按键是否按下

        /// 
        /// 窗体移动监听绑定
        /// 

        private void FormMovableEvent()
        {
            //窗体移动
            this.MouseDown += new MouseEventHandler(Frm_MouseDown);
            this.MouseMove += new MouseEventHandler(Frm_MouseMove);
            this.MouseUp += new MouseEventHandler(Frm_MouseUp);
        }

        /// 
        /// 窗体按下时
        /// 

        /// 
        /// 
        private void Frm_MouseDown(object sender MouseEventArgs e)
        {
            int xOffset;
            int yOffset;
            //点击窗体时,记录鼠标位置,启动移动
            if (e.Button == MouseButtons.Left)
            {
                xOffset = -e.X;
                yOffset = -e.Y;
                mouseOffset = new Point(xOffset yOffset);
                isMouseDown = true;
            }
        }

        /// 
        /// 窗体移动时
        /// 

        /// 
        /// 
        private void Frm_MouseMove(object sender MouseEventArgs e)
        {
            if (isMouseDown)
            {
                //移动的位置计算
                Point mousePos = Control.MousePosition;
                mousePos.Offset

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        189  2017-03-24 21:32  TransparentForm\App.config

     文件      48640  2017-04-15 09:07  TransparentForm\bin\Debug\TransparentForm.exe

     文件        189  2017-03-24 21:32  TransparentForm\bin\Debug\TransparentForm.exe.config

     文件      36352  2017-04-15 09:07  TransparentForm\bin\Debug\TransparentForm.pdb

     文件      22696  2017-04-15 09:08  TransparentForm\bin\Debug\TransparentForm.vshost.exe

     文件        189  2017-03-24 21:32  TransparentForm\bin\Debug\TransparentForm.vshost.exe.config

     文件        490  2016-07-16 19:44  TransparentForm\bin\Debug\TransparentForm.vshost.exe.manifest

     文件       4101  2017-04-15 09:11  TransparentForm\GraphicsPathForm.cs

     文件       1793  2017-04-10 20:23  TransparentForm\GraphicsPathForm.Designer.cs

     文件      30946  2017-04-10 20:23  TransparentForm\GraphicsPathForm.resx

     文件       8467  2017-03-29 18:37  TransparentForm\Images\yuan.png

     文件        673  2017-04-09 21:37  TransparentForm\MainForm.cs

     文件       2702  2017-04-09 21:37  TransparentForm\MainForm.Designer.cs

     文件       5817  2017-04-09 21:37  TransparentForm\MainForm.resx

     文件       1464  2017-03-26 22:13  TransparentForm\obj\Debug\DesignTimeResolveAssemblyReferences.cache

     文件       7292  2017-04-10 17:59  TransparentForm\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache

     文件          0  2017-03-24 22:35  TransparentForm\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs

     文件          0  2017-03-24 22:35  TransparentForm\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs

     文件          0  2017-03-24 22:35  TransparentForm\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs

     文件       3584  2017-04-09 21:12  TransparentForm\obj\Debug\TempPE\Properties.Resources.Designer.cs.dll

     文件       1107  2017-04-15 09:08  TransparentForm\obj\Debug\TransparentForm.csproj.FileListAbsolute.txt

     文件       1160  2017-04-10 20:26  TransparentForm\obj\Debug\TransparentForm.csproj.GenerateResource.Cache

     文件       2384  2017-04-09 20:26  TransparentForm\obj\Debug\TransparentForm.csprojResolveAssemblyReference.cache

     文件      48640  2017-04-15 09:07  TransparentForm\obj\Debug\TransparentForm.exe

     文件      17046  2017-04-10 20:26  TransparentForm\obj\Debug\TransparentForm.GraphicsPathForm.resources

     文件        180  2017-04-09 21:37  TransparentForm\obj\Debug\TransparentForm.MainForm.resources

     文件      36352  2017-04-15 09:07  TransparentForm\obj\Debug\TransparentForm.pdb

     文件        180  2017-04-09 21:37  TransparentForm\obj\Debug\TransparentForm.Properties.Resources.resources

     文件      17046  2017-04-09 21:37  TransparentForm\obj\Debug\TransparentForm.UpdatelayeredWindowForm.resources

     文件        530  2017-04-09 21:37  TransparentForm\Program.cs

............此处省略22个文件信息

评论

共有 条评论