API实现窗口透明、滑动、淡入淡出等动画效果

API实现窗口透明、滑动、淡入淡出等动画效果
AW_HOR_POSITIVE (0x00000001) '从左到右打开窗口
AW_HOR_NEGATIVE (0x00000002 ) '从右到左打开窗口
AW_VER_POSITIVE (0x00000004) '从上到下打开窗口
AW_VER_NEGATIVE (0x00000008) '从下到上打开窗口
AW_CENTER    (0x00000010) '若使用了AW_HIDE标志,则使窗口向内重叠;若未使用AW_HIDE标志,则使窗口向外扩展。但我的感觉是后者的效果不明显
AW_HIDE     (0x00010000) '在窗体卸载时若想使用本函数就得加上此常量
AW_ACTIVATE   (0x00020000) '在窗体通过本函数打开后,默认情况下会失去焦点,除非加上本常量
AW_SLIDE     (0x00040000) '使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略
AW_BLEND     (0x00080000) '淡入淡出效果

至于各个参数在使用时还有什么限制,比如使用哪个标志时,哪一个标志会被忽略,请大家认真查查API手册。
那么好,现在我们先来试试最简单的淡出效果。
$hwnd = GUICreate("Animate Window", 300, 300)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00080000)
GUISetState()

动画的显示时间参数,我设为1000,也就是1秒,这是为了看得清楚些,大家可以根据实际需要更改。
大家可以先运行看看,如何,效果不错吧。

刚才举的例子只是在dwFags标志中用了一个单独的参数,可别忘记了,API手册中还说了很重要的一点:这个参数可以是一个或多个下列标志的组合。
好,举个例子~
$hwnd = GUICreate("Animate Window", 300, 300)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040004)
GUISetState()

出现的是从上到下滑动打开窗口,为什么呢,因为0x00040004=0x00000004+0x00040000,也就是相当于AW_VER_POSITIVE与AW_SLIDE的组合。
再给大家来一个是三个标志组合的例子:
$hwnd = GUICreate("Animate Window", 300, 300)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040006)
GUISetState()
嘿嘿,这次的效果就比较神奇了,乃是界面从左上角出现,滑动至左下角,因为0x00040006=0x00000004+0x00040000+0x00000002
呃,这里有必要说明一下,大家在运算的时候,最好不要过于自信,直接就相加了,有时会达不到预期的效果,为什么呢,可别忘了,这个是16进制的运算,不是我们平日习惯的10进制运算,在没有把握的时候,推荐打开开始菜单里的计算器,切换成16进制的模式来进行运算。
嗯,到这里就讲得差不多了,其实还有许多种组合方式,大家都可以自己去尝试!
最后再给大家讲一下我的发现,刚才大家可能已经发现了,GUISetState()我是放在DLLCALl的后面,如果放在前面呢?
嗯,我发现很多情况下,如果是放在前面,那么dwFags里的组合项中,最好是加上AW_HIDE这个标志,否则看不出效果,而且经过这样处理之后,效果跟原来可是不一样的,以刚才的第一个最简单的例子来说,修改为这样:  
$hwnd = GUICreate("Animate Window", 300, 300)
GUISetState()
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00090000)
0x00090000=0x00090000+0x00010000,也就是加多了一个AW_HIDE,大家看看,效果是不是不一样了?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现WPF中的渐变淡入淡出动画效果,可以使用Opacity属性配合DoubleAnimation来实现。Opacity属性表示元素的不透明度,其值从0到1,0表示完全透明,1表示完全不透明。而DoubleAnimation则可以控制动画的开始值、结束值、动画持续时间等参数。 下面是一个简单的示例,实现了一个Button的渐变淡入淡出动画效果: ```xml <Button Content="Click me!" x:Name="myButton" Opacity="0"> <Button.Triggers> <EventTrigger RoutedEvent="Button.Loaded"> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetName="myButton" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:1" /> <DoubleAnimation Storyboard.TargetName="myButton" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:1" BeginTime="0:0:2" /> </Storyboard> </BeginStoryboard> </EventTrigger> </Button.Triggers> </Button> ``` 以上代码中,Button的Opacity属性初始化为0,即完全透明。在Button的Loaded事件触发时,开始一个Storyboard,其中包含两个DoubleAnimation动画,第一个动画实现渐变淡入,持续1秒钟;第二个动画实现渐变淡出,持续1秒钟,开始时间为2秒钟后。Storyboard中的TargetName和TargetProperty属性分别指定了动画的目标元素和目标属性。 需要注意的是,如果要反复播放渐变淡入淡出动画效果,可以使用RepeatBehavior属性,设置动画的重复次数或重复时长。例如,设置动画重复3次: ```xml <DoubleAnimation Storyboard.TargetName="myButton" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:1" RepeatBehavior="3x" /> ``` 以上就是WPF实现渐变淡入淡出动画效果的简单示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值