窗体动态效果的实现

原创 2004年05月26日 12:00:00

    最近用pb做了一个触摸屏的程序,项目组要求窗口显示关闭的时候有点动态效果,于是我就写了如下的程序,供大家参考借鉴。

-------------------------------------------------------------------------------------
// 实现关闭窗体时的动态效果
// ---------------------------------------------------------
// 函数名:gf_closequery
// 参数说明:
//         window    window类型,调用窗口的名字
//         closetype integer类型,窗口关闭方式,value = 0~10
// ---------------------------------------------------------
// 申明局部变量
int li_x ,li_y,li_width,li_height,li_ceny,li_cenx,li_xminusy,li_wminush
Integer li_gd

// 取出当前窗口的坐标值、大小值
li_x = window.x
li_y = window.y
li_width = window.width
li_height = window.height

// 设置窗体关闭前的动画效果
// 关键是看哪个值发生了变化——x、y、h、w
CHOOSE CASE closetype
 CASE 0      // closetype = 0,从下到上逐渐消失
  for li_gd = li_height to 0 step -1
   window.height = li_gd
   window.show()
  next
 CASE 1      // closetype = 1,从上到下逐渐消失
  for li_gd = li_y to li_height+li_y step 1
   window.y = li_gd
   window.height = li_height+li_y - li_gd
   window.show()
  next
 CASE 2      // closetype = 2,从右到左逐渐消失
  for li_gd =  li_width to 0 step -1
   window.width = li_gd
  next
 CASE 3      // closetype = 3,从左到右逐渐消失
  for li_gd =  li_x to li_x+li_width step 1
   window.x = li_gd
   window.width = li_x+li_width - li_gd
   window.show()
  next
 case 4      // closetype = 4,从上下向中间挤压逐渐消失
  li_ceny = li_y+li_height/2
  for li_gd = li_y to li_ceny step 1
   window.y = li_gd
   window.height = li_height - 2*(li_gd - li_y)
  next
 case 5      // closetype = 5,从左右向中间挤压逐渐消失
  li_cenx = li_x+li_width / 2
  for li_gd = li_x to li_cenx step 1
   window.x = li_gd
   window.width = li_width - 2*(li_gd - li_x)
  next
 case 6      // closetype = 6,从左上->右下
  for li_gd = li_y to li_height+li_y step 1
   window.y = li_gd
   window.height = li_height+li_y - li_gd
   if window.x < li_x + li_width then
    window.x = li_x + (li_gd - li_y)
   else
    window.x = li_x + li_width
   end if
   if window.width > 0 then
    window.width = li_x+li_width - window.x
   else
    window.width = 0
   end if
  next
  window.x = li_x + li_width
  window.y = li_height+li_y
  window.width = 0
  window.height = 0
  window.show()
 case 7      // closetype = 7,从右下->左上
  for li_gd = li_height to 0 step -1
   window.height = li_gd
   if window.width > 0 then
    window.width = li_width - (li_height - li_gd)
   else
    window.width = 0
   end if
  next
  window.x = li_x
  window.y = li_y
  window.width = 0
  window.height = 0
  window.show()
 case 8      // closetype = 8,从右上->左下
  for li_gd = li_y to li_height+li_y step 1
   window.y = li_gd
   window.height = li_height+li_y - li_gd
   if window.width > 0 then
    window.width = li_width - (li_gd - li_y)
   else
    window.width = 0
   end if
  next
  window.x = li_x
  window.y = li_height+li_y
  window.width = 0
  window.height = 0
  window.show()
 case 9      // closetype = 9,从左下->右上
  for li_gd = li_x to li_x+li_width step 1
   window.x = li_gd
   window.width = li_width +li_x -li_gd
   if window.height > 0 then
    window.height = li_height -(li_gd - li_x)
   else
    window.height = 0
   end if
  next
  window.x = li_x+li_width
  window.y = li_y
  window.width = 0
  window.height = 0
  window.show()
 case 10      // closetype = 10,从四面到中间
  li_ceny = li_y+li_height/2
  li_cenx = li_x+li_width / 2
  for li_gd = li_y to li_ceny step 1
   window.y = li_gd
   window.height = li_height - 2*(li_gd - li_y)
   if window.x < li_x + li_cenx then
    window.x = li_x + (li_gd - li_y)
   else
    window.x = li_x + li_cenx
   end if
   if window.width > 0 then
    window.width = li_width - 2*(li_gd - li_y)
   else
    window.width = 0
   end if
  next
  window.x = li_cenx
  window.y = li_ceny
  window.width = 0
  window.height = 0
  window.show()
 case else
  window.show()
  window.width = li_width
  window.height = li_height
  window.x = li_x
  window.y = li_y
END CHOOSE
return 0
***********************************
// 调用该函数在窗体的 closequery 事件中
gf_closequery (w_main,mod(integer(string(now(),"ss")),11))
-------------------------------------------------------------------------------------
    上面是关闭时的效果,窗体打开时的动态效果的语句跟上面的差不多,在此就不写啦,如果有需要的可以告诉我,我单独发送。谢谢。

MFC窗体滑动、缩放、渐变动态效果的实现

要实现动画显示窗体效果需要使用AnimateWindow函数,并设置0x00000010风格,由于该函数并没有被封装,所以需要进行手动导入User32动态库。并定义0x00000010风格为AW_CE...
  • shufac
  • shufac
  • 2014年05月03日 23:43
  • 1432

MFC窗体滑动、缩放、渐变动态效果的实现 .

转自:http://blog.csdn.net/shufac/article/details/24932279   要实现动画显示窗体效果需要使用AnimateWindow函数,并设置0x0000...
  • heary29
  • heary29
  • 2015年03月09日 11:27
  • 905

c# WinForm窗体实现动态时间展示

动态展示时间窗体组件Timer启动,单位1000毫秒Timer事件using System; using System.Collections.Generic; using System.Compon...
  • qq_36482772
  • qq_36482772
  • 2017年06月01日 11:30
  • 1118

css 实现图片动态效果

使用方法 利用hover伪类 操作流程 首先确定要实现的效果 设置初始表示状态 动画用到的css属性 transition 属性 transition-property 规定设置过渡效...
  • qq_35532442
  • qq_35532442
  • 2017年05月11日 20:29
  • 646

C#-窗体透明度,通过TrackBar设置窗体透明度动态效果---ShinePans

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin...
  • panshang1994
  • panshang1994
  • 2014年10月20日 12:43
  • 2360

Visual C++设计超强仿QQ自动伸缩窗口

模仿前最重要的一步就是观察,经过半天对QQ的摆弄和摸索,总结出了以下一些特点:   1、窗口开始粘附时,检测的是鼠标坐标与桌面边界的距离,特别地,粘附在下面的时候,检测的是与任务栏的距离;   2...
  • xad25b9ec0c
  • xad25b9ec0c
  • 2014年05月02日 17:44
  • 310

Android常用开源项目(三十四)

Android开发之实现车辆运动的动态效果~车辆开动起来了 1.首先看下运行效果吧 运行效果图一 运行效果图二 2.再看下代码结构图吧 ...
  • weixin_37730482
  • weixin_37730482
  • 2017年06月28日 09:33
  • 101

Qt 之 QQ系统表情—实现动态显示效果

简述在Qt 之 QQ系统表情(五) 中 我们实现了自定义系统表情窗口,这一篇将简单介绍如何实现QQ聊天界面中小表情窗口切换至正常表情窗口的动画效果。先看看QQ的效果: 当鼠标悬浮在表情按钮之上显示...
  • GoForwardToStep
  • GoForwardToStep
  • 2016年09月26日 22:15
  • 2666

CSS3实现钟摆动态效果

css3 animation制作钟摆动画效果
  • qq_27680431
  • qq_27680431
  • 2016年07月07日 17:59
  • 2942

C# winform窗体动画实现

这里主要是用到win32的一个方法 AnimateWindow(),详细介绍可以搜索AnimateWindow。 代码: using System; using System.Collection...
  • zuoyefeng1990
  • zuoyefeng1990
  • 2017年03月15日 13:18
  • 360
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:窗体动态效果的实现
举报原因:
原因补充:

(最多只允许输入30个字)