using Azylee.WinformSkin.APIUtils;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Azylee.WinformSkin.FormUI.SimpleShadow
{
public partial class SimpleShadowForm : Form
{
#region 属性
private Point _MouseLocation;
internal Point MouseLocation { get { return _MouseLocation; } }
internal int ShadowWidth = 15;
private SimpleShadowBackForm Shadow;
#endregion
public SimpleShadowForm()
{
InitializeComponent();
//SetStyles();//减少闪烁
FormBorderStyle = FormBorderStyle.None;//设置无边框的窗口样式
ShowInTaskbar = false;
}
private void SimpleShadowForm_Load(object sender, EventArgs e)
{
if (!DesignMode)
{
Shadow = new SimpleShadowBackForm(this);//创建皮肤层
ShadowForm_LocationChanged(null, null);
Shadow.BackColor = Color.Red;
LocationChanged += new EventHandler(ShadowForm_LocationChanged);
}
}
private void SimpleShadowForm_Shown(object sender, EventArgs e)
{
if (!DesignMode)
Shadow.Show();//显示皮肤层
}
private void SimpleShadowForm_FormClosed(object sender, FormClosedEventArgs e)
{
if (!DesignMode)
Shadow.Hide();//关闭皮肤层
}
#region 减少闪烁
private void SetStyles()
{
SetStyle(
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.ResizeRedraw |
ControlStyles.DoubleBuffer, true);
//强制分配样式重新应用到控件上
UpdateStyles();
base.AutoScaleMode = AutoScaleMode.None;
}
#endregion
///
/// 窗体显示状态
///
///
public void Visibility(bool value)
{
if (value)
{
Show();
Shadow.Show();
}
else
{
Hide();
Shadow.Hide();
}
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
_MouseLocation = e.Location;
if (e.Button == MouseButtons.Left)
{
FormStyleAPI.ReleaseCapture();
FormStyleAPI.SendMessage(Handle, FormStyleAPI.WM_NCLBUTTONDOWN, FormStyleAPI.HTCAPTION, 0);
}
}
private void ShadowForm_LocationChanged(object sender, EventArgs e)
{
if (Shadow != null)
{
Shadow.Location = new Point(Left - ShadowWidth, Top - ShadowWidth);
Shadow.DrawShadow();
}
}
public void DrawShadow()
{
if (Shadow != null)
{
Invoke(new Action(() =>
{
Shadow.DrawShadow();
}));
}
}
#region 界面UI及元素操作
///
/// 控件可用
///
///
///
public void UIEnable(Control ctrl, bool enable = true)
{
Invoke(new Action(() =>
{
ctrl.Enabled = enable;
}));
}
///
/// 控件显示
///
///
///
public void UIVisible(Control ctrl, bool enable = true)
{
Invoke(new Action(() =>
{
ctrl.Visible = enable;
}));
}
///
/// UICLose
///
public void UIClose()
{
Invoke(new Action(() =>
{
Close();
Shadow.Close();
}));
}
///
/// 最小化
///
///
///
public void UIMin()
{
Invoke(new Action(() =>
{
WindowState = FormWindowState.Minimized;
Shadow.WindowState = FormWindowState.Minimized;
}));
}
///
/// 最大化及还原
///
///
///
public void UIMax()
{
Invoke(new Action(() =>
{
if (WindowState != FormWindowState.Maximized)
{
WindowState = FormWindowState.Maximized;
Shadow.WindowState = FormWindowState.Maximized;
}
else
{
WindowState = FormWindowState.Normal;
Shadow.WindowState = FormWindowState.Normal;
}
}));
}
public void UIShow()
{
Invoke(new Action(() =>
{
Show();
Shadow.Show();
}));
}
public void UIHide()
{
Invoke(new Action(() =>
{
Hide();
Shadow.Hide();
}));
}
#endregion
}
}