转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> 网页制作 >> 正文
Powerbuilder中利用API实现动画特效         ★★★★

Powerbuilder中利用API实现动画特效

作者:闵涛 文章来源:闵涛的学习笔记 点击数:845 更新时间:2009/4/23 14:09:44
  摘要:本文通过在Powerbuilder中调用Windows API函数,实现任意图片的放大及任意图片从正面逐渐翻转到背面的功能

  关键词:内存设备描述表 显示器设备描述表 API

  一、问题的提出

  Powerbuilder是一个面向对象的开发大型数据库的图形化的前端开发工具,其优异的性能越来越受到广大开发人员的欢迎。然而,在绘图方面却显不足。其图片的显示是主要靠picture控件来完成的,由于不象c++builder等工具那样具有画布功能,要实现动画特效,单靠Picture 控件本身的属性与方法来实现,只能完成基本的、简单的动画,且效果不理想,容易产生闪烁现象。我们在开发中为了较好的实现动画特效,调用了Windows API函数,结果不仅克服了闪烁现象,而且还能实现较复杂的动画功能。

  二、设计思想

  我们知道windows图形设备接口为windows应用程序提供了屏幕及打印机的设备无关接口,而windows为应用程序提供设备无关性所使用的基本工具是设备描述表〔DC〕。为了显示位图,要将位图加到显示器设备描述表上。程序通常不能直接在设备描述表上绘图,用CreateCompatibleDC函数创建与指定设备兼容的内存设备描述表,每当程序使用位图时,程序首先把位图放在内存设备描述表中,然后再拷贝到指定的设备描述表中。

  那幺我们如何应用上述原理来实现powerbuilder中的动画特效呢﹖由于在Powerbuilder中位图图片是由picture控件来显示的,只要用获取设备描述表的函数GetDC来取得picture控件的设备描述表,再将与其兼容的内存设备描述表中的位图通过Bitblt、StretchBlt函数将图象按一定的增加量从小到大分多步拷贝到picture设备描述表中,在加以时间延迟,便形成动画特效。

  三、所涉及的Windows API函数

  API函数在Powerbuilder下的声明如下:

  1〕 function uint GetDC(uint hwnd) library "c:\windows\system\user32.dll"//取得一个显示器设备描述表。参数hwnd标识将绘图的窗口的句柄。若成功,则返回指定窗口的设备描述表,若失败,则返回为NULL。

  2〕 function long BitBlt(uint hdcdest,int xdest,int ydest,int wdest,int hdest,uint hdcsrc,int xsrc,int ysrc,ulong dwrop) library "c:\windows\system\gdi32.dll"//将源设备描述表中的图片转移到目的设备描述表中。参数hdcdest标识图象转移的目的DC,xdest和ydest标识目的DC的位置,wdest和hdest标识图象的宽度与高度,hwndsrc标识图象转移的来源DC,xsrc和ysrc标识来源DC的位置,dwrop标识图象转移方式。若成功返回值为0,若失败返回值为非零。

  3〕 function long StretchBlt(uint hddest,int xdest,int ydest,int wdest,int hdest,uint hdsrc,int xsrc,int ysrc,int wsrc,int hsrc,ulong dwrop) library "c:\windows\system\gdi32.dll"//将源设备描述表中的图片放大、缩小、翻转、转移到目的设备描述表中。参数意义同BitBlt中的参数意义相同,多出的wsrc和hsrc为来源图象的宽度与高度。

  4〕 function ulong ReleaseDC(ulong hwnd,ulong hdc) library "c:\windows\system\user32.dll" //将由GetDC取得的设备描述表释放掉。参数hwnd标识窗口,hdc标识ReleaseDC将释放的设备描述表,若释放成功则返回1,若释放失败则返回0。

  5〕 function ulong CreateCompatibleDC(ulong hdc) library "c:\windows\system\gdi32.dll"//创建一个与hdc兼容的内存设备描述表。参数hdc标识设备描述表。若创建成功,则返回内存设备描述表,若创建失败,则返回为NULL。

  6〕 function ulong DeleteDC(ulong hdc) library "c:\windows\system\gdi32.dll"//将由CreateCompatibleDC建立的DC释放掉。参数hdc为设备描述表的句柄。若成功则返回值为非零,若失败则返回值为0。

  7〕 function ulong SelectObject(ulong hdc ,ulong hobject) library "c:\windows\system\gdi32.dll"//将一个已建立好的对象选入到指定的设备描述表中。参数hdc标识DC的句柄,hobject为对象的句柄。返回值为DC之中前一个同类型对象的句柄。

  8〕 function ulong DeleteObject(ulong hobject) library "c:\windows\system\gdi32.dll"//删除一个位图、花色对象。参数 hobject为对象的句柄。若成功则返回值为非零,若失败则返回值为0。

  9〕 function ulong LoadImageA(ulong hintance, ref string filename,uint utype,int width,int height,uint fload) library "c:\windows\system\user32.dll"//装入一个位图、图标、光标。参数hintance为装有图象的实例的句柄,若装入一OEM图象,此参数置为0,filename为图象的名字或定义,utype为装入图象的类型,width和height为装入时希望的图象的宽度与高度,fload为装入时的标志。若成功,返回值为最近装入图象的句柄,若失败,返回值为NULL。


[VB.NET程序]Auto Complete combo Box(VB.NET Source Use API…  [VB.NET程序]在 VB 中使用 Unicode API
[VB.NET程序]API 更改系统菜单条目  [VB.NET程序]在VB中调用Windows API的注意事项
[VB.NET程序]vb调用winInet API接口post数据到指定的url  [VB.NET程序]如 何 用 API 播 放 CD
[VB.NET程序]VB5.0与Windows API 间的呼叫技巧  [VB.NET程序]在VB6中用WINDOWS API函数读写INI文件
[VB.NET程序]Visual Basic调用Windows API函数的应用举例  [VB.NET程序]VB + API 获取 IE 的 代理服务器 配制
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台