资源简介
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.Updatela
文件 530 2017-04-09 21:37 TransparentForm\Program.cs
............此处省略22个文件信息
评论
共有 条评论