设计动画显示窗体

一、实例介绍

本文实现的动画是指,窗体显示的时候慢慢显示到用户面前,窗体关闭时,有一个动态效果!

二、设计思路

需要使用Windows提供的API函数AnimateWindow(),该函数存放在user.dll文件中,该函数的声明方法如下:

[DllImport("user32.dll")]
        private static extern bool AnimateWindow(IntPtr hwnd,int dwTime,int dwFlags);

其中参数意义如下:

hwnd:目标窗口句柄。

dwTime:动画持续时间。数值越大,动画效果越长。

dwFlags:动画效果类型选项。

使用动画类型效果必须在程序中声明才可以,声明代码如下。

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;

这些动画效果可以叠加使用。

注意:必须引用命名空间:using System.Runtime.InteropServices;

三、设计方法

创建一个winform项目,添加一个form窗体,在窗体中添加picturebox,设置image属性为要显示的图片,设置dock属性为fill

四、窗体代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Windows.Forms;
 9 using System.Runtime.InteropServices;
10
11 namespace Kaifafanli
12 {
13     public partial class Form7 : Form
14     {
15         [DllImport("user32.dll")]
16         private static extern bool AnimateWindow(IntPtr hwnd,int dwTime,int dwFlags);
17         public const Int32 AW_HOR_POSITIVE = 0x00000001;
18         public const Int32 AW_HOR_NEGATIVE = 0x00000002;
19         public const Int32 AW_VER_POSITIVE = 0x00000004;
20         public const Int32 AW_VER_NEGATIVE = 0x00000008;
21         public const Int32 AW_CENTER = 0x00000010;
22         public const Int32 AW_HIDE = 0x00010000;
23         public const Int32 AW_ACTIVATE = 0x00020000;
24         public const Int32 AW_SLIDE = 0x00040000;
25         public const Int32 AW_BLEND = 0x00080000;
26         public Form7()
27         {
28             InitializeComponent();
29         }
30
31         private void Form7_Load(object sender, EventArgs e)
32         {
33             AnimateWindow(this.Handle,300,AW_SLIDE+AW_HOR_NEGATIVE);
34         }
35
36         private void Form7_FormClosed(object sender, FormClosedEventArgs e)
37         {
38             AnimateWindow(this.Handle, 300, AW_SLIDE + AW_HOR_NEGATIVE+AW_HIDE);
39         }
40     }
41 }

时间: 2024-10-28 10:54:21

设计动画显示窗体的相关文章

【笔记】动画显示窗体

实例说明 当用户启动程序后,普通的程序窗口都是瞬间显示到屏幕上,这样未免有些生硬.如果窗口能够慢慢的展现在用户面前,将会是什么样的效果?本例设计的是一个动画显示的窗体,该程序运行后,窗体是慢慢的以拉伸的效果显示到用户的面前.当关闭时也是一样慢慢的消失. 技术要点 Windows提供了一个API函数Animate Window,该函数可以实现窗体的动画效果,AnimateWindow函数在C#中的声明如下 1 [DllImportAttribute("user32.dll")] 2 pr

EVC编程点滴-GIF动画显示类

此功能在我这个项目中,主要是显示让用户等待的提示.如开机过程.待机界面调用一个系统应用的过程.还有就是操作大尺寸图片的过程. 刚开始是用自定义的一个窗体来提示用户的,功能也可以实现,但美观度不够.所以才花了一定时间,对网上这个类进行研究.最终成功应用于项目中. 这个类的实现,主要是参考网上一个名为CGif89a类的实现. 此类在EVC4工程中可以正常使用. 索引: 1) GIF显示类头文件 2) GIF显示类的实现 3) 调用CGIFShow类示例 (1) 定义全局变量 (2) 在窗体的WM_C

游戏UI框架设计(四) : 模态窗体管理

游戏UI框架设计(四) --模态窗体管理 我们在开发UI窗体时,对于"弹出窗体"往往因为需要玩家优先处理弹出小窗体,则要求玩家不能(无法)点击"父窗体",这种窗体就是典型的"模态窗体".在此笔者设计了四种模式类型:完全透明.半透明.低透明度.透明且可以穿透. (透明不能穿透) (半透明不能穿透) (低透明度,不能穿透) 对于"模态窗体"的基本实现原理是: 在弹出窗体的后面增加一层"UI遮罩窗体",当需要弹出

使用maskView设计动画效果

在 极客学院 简单学习了一下 如何使用maskView设计动画效果 主要是通过CAGradientLayer 或者 带有alpha的图片来操作 //MARK:1. maskView(maskLayer)基本原理 CGFloat width = 120.f; //底图 self.baseImageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 20, width, width)]; [_baseImageView setImage:[

纯css3开发的响应式设计动画菜单(支持ie8)

这是一个响应式设计的菜单.单击列表图标,当你显示屏大小可以完全水平放下所有菜单项时,菜单水平显示(如图1).当你的显示屏不能水平放置所有菜单项时,菜单垂直显示(如图2). 而且显示的时候是以动画的型式显示.效果相当的好. 点击这里在线预览 下面贴出实现这功能的源代码,这是一个纯用css3实现的菜单 html代码: <div class="container"> <!--[if lte IE 8]> <style> .iconicmenu > l

PYQT设计无边框窗体

#UI.py,通过UI设计师制作后直接转换为UI.py脚本 # -*- coding: utf-8 -*-from PyQt4 import QtCore, QtGui try:    _fromUtf8 = QtCore.QString.fromUtf8except AttributeError:    _fromUtf8 = lambda s: s class Ui_Form(object):    def setupUi(self, Form):        Form.setObject

Js_动画显示背景图片

jAni是一个可以动画显示背景图片的jQuery插件.这个插件基本上是GIF动画的一个替代品,但是他有他的好处.所有浏览器都支持GIF形式的动画格式,而且也不需要额外的javaScript代码和标记.但是不好的一点是,GIF格式的图片只有256色.而且你不能控制图片的显示.这个插件通过载入垂直的GIF帧,然后改变容器的background-postion来显示动画,这样你就可以自由控制了. 特色 轻量级的脚本 很容易使用 可以通过CSS完全定制 所有浏览器都支持 如何使用 1.下载脚本,并包含j

js动画显示背景图片

jAni是一个可以动画显示背景图片的jQuery插件.这个插件基本上是GIF动画的一个替代品,但是他有他的好处.所有浏览器都支持GIF形式的动画格式,而且也不需要额外的javaScript代码和标记.但是不好的一点是,GIF格式的图片只有256色.而且你不能控制图片的显示.这个插件通过载入垂直的GIF帧,然后改变容器的background-postion来显示动画,这样你就可以自由控制了. 特色 轻量级的脚本 很容易使用 可以通过CSS完全定制 所有浏览器都支持 如何使用 1.下载脚本,并包含j

Silverlight动画显示Line线

目的:在silverlight中显示两点之间的连线,要求动画显示连线效果. 如果需实现动画效果不得不了解,Storyborad对象: Storyboard Silverlight 通过时间线控制动画,并为其子动画提供对象和属性目标信息. XAML <Storyboard ...> oneOrMoreChildTimelines </Storyboard> XAML 值 值 描述 oneOrMoreChildTimelines 从 Timeline 派生的以下对象元素中的一个或多个: