zoukankan      html  css  js  c++  java
  • 【C#】调用API函数给Winform窗体添加动态特效(转)

    想让你的Winform窗体美化得更炫、更美丽,光是有漂亮的C#皮肤、背景贴图等这些静态的部分是远远不够的,还需要有一些动态部分的加持才能让你的程序界面有更好的用户体验。

    这里要介绍的是调用user32.dll中的API函数来给Winform界面添加动态特效。user32.dll是Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息。与C++一样,在C#中同样可以利用user32里面的一些API函数来开发WINFORM程序。

    1.导入user32.dll并声明API函数AnimateWindow

    //导入user32.dll
    [System.Runtime.InteropServices.DllImport("user32")]
    //声明API函数
    private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags); 

    AnimateWindow函数里面的3个传参的说明如下:

    hwnd        界面上控件的句柄

    dwTime    窗体特效执行的持续时间(1=1毫秒、1000=1秒)

    dwFlags   窗体特效的值

     2.dwFlags要传的参数是一些INT类型的常量,这些常量定义了该特效具体有哪些动作。

            //正面_水平方向
            const int AW_HOR_POSITIVE = 0x0001;
            
    //负面_水平方向
            const int AW_HOR_NEGATIVE = 0x0002;
            
    //正面_垂直方向
            const int AW_VER_POSITIVE = 0x0004;
            
    //负面_垂直方向
            const int AW_VER_NEGATIVE = 0x0008;
            
    //由中间四周展开或由四周向中间缩小
            const int AW_CENTER = 0x0010;
            
    //隐藏对象
            const int AW_HIDE = 0x10000;
            
    //显示对象
            const int AW_ACTIVATE = 0x20000;
            
    //拉幕滑动效果
            const int AW_SLIDE = 0x40000;
            
    //淡入淡出渐变效果
            const int AW_BLEND = 0x80000

    当然编写代码的时候可以将这些INT值全部放含在一个枚举类中,这样在程序里引用起来会更方便

     3.在程序事件中调用AnimateWindow方法,执行窗体特效。

    //动画——窗体由四周向中心缩小直至消失
    //AW_CENTER | AW_HIDE | AW_HOR_NEGATIVE表示三种特效状态的集合,以“|”间隔,这和C++上调用API函数差不多
    //this.Handle为主窗体的句柄,用其他控件的句柄亦可
    AnimateWindow(this.Handle, 1000, AW_CENTER | AW_HIDE | AW_HOR_NEGATIVE);

     4.这里给个为Winform窗体添加动态特效的程序例子:Sample

     5.除此之外,关于user32.dll中其他API函数的调用这里有篇文章介绍得蛮详细的:Windows API User32.dll详细介绍

    转自http://www.cnblogs.com/youuuu/archive/2011/06/22/2086768.html

  • 相关阅读:
    回溯算法之素数环
    回溯算法之迷宫问题
    回溯算法之0-1背包问题
    贪心算法之搬桌子问题
    贪心算法之背包问题
    动态规划之收集苹果
    动态算法
    c#数和二叉树
    c# 排序算法
    c#栈的习题2
  • 原文地址:https://www.cnblogs.com/JuneZhang/p/2095628.html
Copyright © 2011-2022 走看看