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;
using LYFZ.WinAPI;
namespace LYFZ.ComponentLibrary
{
///
/// 无边框四边阴影基窗体
///
public partial class BaseShadowForm : BaseMotherForm
{
ShadowLayer layer = null;
bool _isShadow = true;
///
/// 是否开启四边阴影
///
[DescriptionAttribute("是否开启四边阴影"), CategoryAttribute("自定义窗体属性"), DefaultValueAttribute(typeof(bool), "true")]
public bool IsShadow
{
get { return _isShadow; }
set { _isShadow = value; }
}
Rectangle _layerRel = new Rectangle(5,5,10,12);
///
/// 在开启阴影效果时设置阴影位置和大小
///
[DescriptionAttribute("在开启阴影效果时设置阴影位置和大小"), CategoryAttribute("自定义窗体属性")]
public Rectangle LayerRel
{
get { return _layerRel; }
set { _layerRel = value; }
}
public BaseShadowForm()
{
InitializeComponent();
}
//Show或Hide被调用时
protected override void OnVisibleChanged(EventArgs e)
{
if (Visible)
{
//启用窗口淡入淡出
if (!DesignMode)
{
//淡入特效
// Win32.AnimateWindow(this.Handle, 150, Win32.AW_BLEND | Win32.AW_ACTIVATE);
}
//判断不是在设计器中
if (!DesignMode && layer == null)
{
if (IsShadow)
{
layer = new ShadowLayer(this);
layer.Difference_X = LayerRel.X;
layer.Difference_Y = LayerRel.Y;
layer.Difference_Width = LayerRel.Width;
layer.Difference_Height = LayerRel.Height;
if (this.IsReion && this.Width == 780 && this.Height == 580)
{
layer.Difference_X = 19;
layer.Difference_Y = 27;
layer.Difference_Width = 38;
layer.Difference_Height = 46;
layer.SetInit();
}
layer.Show(this);
}
}
base.OnVisibleChanged(e);
}
else
{
base.OnVisibleChanged(e);
// Win32.AnimateWindow(this.Handle, 150, Win32.AW_BLEND | Win32.AW_HIDE);
}
}
//窗体关闭时
protected override void OnClosing(CancelEventArgs e)
{
base.OnClosing(e);
//先关闭阴影窗体
if (layer != null)
{
layer.Close();
layer.Dispose();
}
//在Form_FormClosing中添加代码实现窗体的淡出
// Win32.AnimateWindow(this.Handle, 150, Win32.AW_BLEND | Win32.AW_HIDE);
}
}
}