目录
1,窗体闪烁。
2,透明非矩形的窗体。
3,窗口显示,退出呈现平滑效果。
4,窗体不在任务栏中显示:
1,窗体闪烁。
/// <summary>
/// 窗体闪烁
/// </summary>
/// <param name="handle">将要闪烁的窗体</param>
/// <param name="blnvert">是否恢复状态</param>
/// <returns></returns>
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool FlashWindow(IntPtr handle, bool blnvert);
2,透明非矩形的窗体。
效果:
在线免费抠图网站:在线抠图软件_图片去除背景 | remove.bg – remove.bg
public partial class Form1 : Form
{
Bitmap bit;
public Form1()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e)
{
//e.Graphics.DrawEllipse(new Pen(Color.Red,2), new RectangleF(0, 0, this.Width-2, this.Height-2));
e.Graphics.DrawImage(bit, new Point(0, 0));
e.Graphics.DrawString("Good", new Font("华文行楷", 15), Brushes.Red, new PointF(10, 10));
}
private void Form1_Load(object sender, EventArgs e)
{
bit = new Bitmap("../../1.png");
bit.MakeTransparent(Color.Blue);
this.TransparencyKey = Control.DefaultBackColor;//必须对该属性进行设置否则背景不透明
}
}
3,窗口显示,退出呈现平滑效果。
/// <summary>
/// 窗口显示关闭动画
/// </summary>
class PopUpWindowAnimation
{
/// <summary>
/// 窗口打开关闭动画
/// </summary>
/// <param name="hander">窗口句柄</param>
/// <param name="duration">持续时间</param>
/// <param name="effert">效果</param>
/// <returns></returns>
public static bool PopWindow(IntPtr handle,int duration, Effect effert)
{
bool result = AnimateWindow(handle, duration, (int)effert);
return result;
}
/// <summary>
/// 实现窗口的动画效果
/// </summary>
/// <param name="hwnd">窗口句柄</param>
/// <param name="dwTime">动画持续的时间</param>
/// <param name="dwFlags">动画类型选项</param>
/// <returns></returns>
[DllImport("user32.dll")]
static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
}
/// <summary>
/// 动画效果
/// </summary>
[Flags]
public enum Effect
{
/// <summary>
/// 滑动效果。默认为滚动动画类型,当使用AW_CENTER标志时,这个标志被忽略
/// </summary>
AW_SLIDE = 0X40000,
/// <summary>
/// 激活窗口。在使用AW_HIDE标志后不要使用这个标志
/// </summary>
AW_ACTIVATE = 0X20000,
/// <summary>
/// 使用淡入效果。只有当hWnd为顶层窗口时才可以使用此标志
/// </summary>
AW_BLEND = 0X80000,
/// <summary>
/// 隐藏窗口,默认则显示窗口
/// </summary>
AW_HIDE = 0X10000,
/// <summary>
///若使用AW_HIDE标志,则使窗口向内重叠;若使用AW_HIDE标志,则使窗口向外扩展。
/// </summary>
AW_CENTER = 0X10,
/// <summary>
/// 自左向右显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志
/// 被忽略
/// </summary>
AW_HOR_POSITIVE = 0X1,
/// <summary>
/// 自右向左显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志
/// 被忽略
/// </summary>
AW_HOR_NEGATIVE = 0X2,
/// <summary>
/// 自上向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志
/// 被忽略
/// </summary>
AW_VER_POSITIVE = 0X4,
/// <summary>
/// 自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志
/// 被忽略
/// </summary>
AW_VER_NEGATIVE = 0X8
}
4,窗体不在任务栏中显示:
设置窗体属性:
FormBorderStyle | ShowInTaskBar | 效果 |
---|---|---|
SizableToolWindow | True | 该窗体不出现在Alt+Tab快捷键的预览窗口中,但任务栏中依然有该窗体 |
SizableToolWindow | False | 该窗体不出现在Alt+Tab快捷键的预览窗口中,也不出现在任务栏中。 |