C#调用Windows的API实现窗体动画
作者:dawn 时间:2022-09-09 13:05:22
在VF、VB、PB的应用中,有些无法通过语言工具本身来完成的或者做得不理想的功能,我们会考虑通过Windows的API来完成。
在那个年代,熟悉API是一个编程者的基本功。那个时候网络信息也不发达,很多资料只能考购买书籍或者自己摸索来获取,每次掌握一个新的API应用内心里都有点小激动。
Powerbuilder数据功能强大,但是界面功能尤其是动画功能比较弱,通过调用Windows的API实现窗体动画比较容易。
声明API调用:
function boolean AnimateWindow ( long hwnd, long dwtime, long dwflags ) library "user32"
声明常量:
constant long AW_HOR_POSITIVE = 1
constant long AW_HOR_NEGATIVE = 2
constant long AW_VER_POSITIVE = 4
constant long AW_VER_NEGATIVE = 8
constant long AW_CENTER = 16
constant long AW_HIDE = 65526
constant long AW_ACTIVATE = 131072
conDAT* ? ?stant long AW_SLIDE = 262144
constant long AW_BLEND = 524288
在窗体的open事件中调用:
long ll_handle
ll_handle = Handle ( This )
Randomize ( 0 )
Choose Case rand ( 6 )
Case 1
AnimateWindow ( ll_handle, 1000, AW_SLIDE + AW_VER_POSITIVE + AW_ACTIVATE )
Case 2
AnimateWindow ( ll_handle, 1000, AW_SLIDE + AW_VER_NEGATIVE+ AW_ACTIVATE )
Case 3
AnimateWindow ( ll_handle, 1000, AW_SLIDE + AW_HOR_POSITIVE + AW_ACTIVATE )
Case 4
AnimateWindow ( ll_handle, 1000, AW_SLIDE + AW_HOR_NEGATIVE + AW_ACTIVATE )
Case 6,5
AnimateWindow ( ll_handle, 1000, AW_SLIDE + AW_CENTER + AW_ACTIVATE )
End Choose
在C#中调用Windows的API来实现动画也一样容易。
引用:
using System.Runtime.InteropServices;
定义常量:
public const Int32 AW_HOR_POSITIVE = 0x00000001;
public const Int32 AW_HOR_NEGATIVE = 0x00000002;
public const Int32 AW_VER_POSITIVE = 0x00000004;
public const Int32 AW_VER_NEGATIVE = 0x00000008;
public const Int32 AW_CENTER = 0x00000010;
public const Int32 AW_HIDE = 0x00010000;
public const Int32 AW_ACTIVATE = 0x00020000;
public const Int32 AW_SLIDE = 0x00040000;
public const Int32 AW_BLEND = 0x00080000;
定义调用:
[DllImportAttribute("user32.dll")]
private static extern bool AnimateWindow(IntPtr hwnd,int dwTime,int dwFlags);
调用:
private void Form1_Load(object sender, EventArgs e)
{
//this.FormBorderStyle =0 ;
Random rand = new Random();
long LL = rand.Next(1,6);
label1.Text = "动画演示:"+LL.ToString();
switch (LL)
{
case 1:
AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_VER_POSITIVE + AW_ACTIVATE);
break;
case 2:
AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_VER_NEGATIVE + AW_ACTIVATE);
break;
case 3:
AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_HOR_POSITIVE + AW_ACTIVATE);
break;
case 4:
AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_HOR_NEGATIVE + AW_ACTIVATE);
break;
case 5:
AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_CENTER + AW_ACTIVATE);
break;
case 6:
AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_CENTER + AW_ACTIVATE);
break;
}
}
效果图
来源:https://blog.csdn.net/dawn0718/article/details/127755736
标签:C#,API,窗体,动画
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
java property配置文件管理工具框架过程详解
2023-10-12 04:35:50
使用@Value值注入及配置文件组件扫描
2023-12-01 21:24:12
Android实现背景图滑动变大松开回弹效果
2022-10-15 10:45:15
![](https://img.aspxhome.com/file/2023/9/108239_0s.jpg)
RocketMQ生产者如何规避故障Broker方式详解
2022-06-23 04:36:10
@SpringBootApplication注解的使用
2022-09-13 04:53:32
![](https://img.aspxhome.com/file/2023/5/68195_0s.png)
Sharding-Proxy基本功能用法介绍
2021-10-17 06:41:03
![](https://img.aspxhome.com/file/2023/7/69877_0s.jpg)
使用java + selenium + OpenCV破解腾讯防水墙滑动验证码功能
2023-07-23 14:32:47
![](https://img.aspxhome.com/file/2023/3/75653_0s.png)
IDEA实现JDBC的操作步骤
2021-08-29 11:08:55
![](https://img.aspxhome.com/file/2023/8/83428_0s.jpg)
SpringBoot整合MongoDB完整实例代码
2023-10-22 03:42:48
![](https://img.aspxhome.com/file/2023/5/81335_0s.jpg)
Java实现循环体的过滤器的方法
2023-11-22 09:35:33
![](https://img.aspxhome.com/file/2023/6/68166_0s.png)
SpringBoot数据访问自定义使用Druid数据源的方法
2023-01-10 16:29:38
![](https://img.aspxhome.com/file/2023/1/91081_0s.jpg)
详解使用Maven开发Web应用详细步骤
2023-08-06 14:18:20
![](https://img.aspxhome.com/file/2023/6/58026_0s.png)
C#中变量、常量、枚举、预处理器指令知多少
2021-05-26 18:29:11
![](https://img.aspxhome.com/file/2023/9/106529_0s.png)
C#/VB.NET 在PDF中添加文件包(Portfolio)的方法
2023-08-28 03:01:18
![](https://img.aspxhome.com/file/2023/5/94555_0s.png)
C# 图片与Base64码的相互转化问题(代码详解)
2021-11-30 22:56:16
C# 实现颜色渐变窗体控件详细讲解
2021-12-31 07:10:28
Java类获取Spring中bean的5种方式
2022-03-11 06:23:39
Java中JMM与volatile关键字的学习
2022-03-24 00:12:00
![](https://img.aspxhome.com/file/2023/2/62202_0s.png)
Kotlin高阶函数reduce与fold使用实例
2023-04-27 22:17:11
Spring Data Jpa框架最佳实践示例
2021-11-25 00:43:01