原文链接:http://hi.baidu.com/coo_boi/item/1264a64172fe8dec1f19bc08

还是找了个C++的翻译下,原文链接:http://www.360doc.com/content/05/1122/15/1894_34348.shtml

GDI+的函数声明 我就不放上了,网上有个做好的GDI+公共模块。

Private Declare Sub RtlZeroMemory Lib "kernel32" (dest As Any, ByVal numBytes As Long)
Private Declare Sub RtlMoveMemory Lib "kernel32" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private GifFramesDelay() As Long
Private Graphics As Long Private Sub Command1_Click()
Dim hImage As Long
Dim Guid As Clsid
Dim dCount As Long
Dim fCount As Long
Dim pItem_() As Byte
Dim pSize As Long
Dim pDelay() As Long
Dim bmpCLSID As Clsid Call GdipLoadImageFromFile(StrPtr("d:\1.gif"), hImage)
Guid = GetImageEncoderClsid(GIF)
'bmpCLSID = GetImageEncoderClsid(BMP)
Call GdipImageGetFrameDimensionsCount(hImage, dCount)
Call GdipImageGetFrameDimensionsList(hImage, Guid, dCount)
Call GdipImageGetFrameCount(hImage, Guid, fCount)
If fCount > Then
Call GdipGetPropertyItemSize(hImage, PropertyTagFrameDelay, pSize)
ReDim pItem_(pSize - )
ReDim GifFramesDelay(fCount - )
Call RtlZeroMemory(ByVal VarPtr(pItem_()), pSize)
Call GdipGetPropertyItem(hImage, PropertyTagFrameDelay, pSize, ByVal VarPtr(pItem_()))
'这里我把最后一个参数的类型(PropertyItem)改成了Any,直接读内存方便些
For i = To pSize - Step
GifFramesDelay(j) = pItem_(i)
j = j +
Next
For i = To fCount -
Call GdipImageSelectActiveFrame(hImage, Guid, i)
Call GdipDrawImage(Graphics, hImage, , )
Call delay_(GifFramesDelay(i) * )
'Call GdipSaveImageToFile(hImage, StrPtr("d:\" & i & ".bmp"), bmpCLSID, ByVal 0&)
Next
End If
Call GdipDisposeImage(hImage)
End Sub Private Sub Form_Load()
InitGDIPlus
Call GdipCreateFromHDC(Form1.hdc, Graphics)
End Sub Private Sub Form_Unload(Cancel As Integer)
Call GdipDeleteGraphics(Graphics)
TerminateGDIPlus
End Sub Private Sub delay_(ByVal d As Long)
Dim n As Long
n = GetTickCount()
Do Until n + d < GetTickCount()
DoEvents
Loop
End Sub

VB6之GIF分解的更多相关文章

  1. GDI+_从Bitmap里得到的Color数组值分解

    [这里写只是我个人的摸索经历,已经给出解决方案] 我之前写过一篇关于ARGB值的研究:https://www.cnblogs.com/lingqingxue/p/10362639.html 最近我又遇 ...

  2. 06.LoT.UI 前后台通用框架分解系列之——浮夸的图片上传

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  3. 07.LoT.UI 前后台通用框架分解系列之——强大的文本编辑器

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  4. 01.LoT.UI 前后台通用框架分解系列之——小图片背景全屏显示(可自动切换背景)

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  5. 02.LoT.UI 前后台通用框架分解系列之——灵活的菜单栏

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  6. 03.LoT.UI 前后台通用框架分解系列之——多样的表格

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  7. 04.LoT.UI 前后台通用框架分解系列之——轻巧的弹出框

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  8. 05.LoT.UI 前后台通用框架分解系列之——漂亮的时间选择器

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  9. 08.LoT.UI 前后台通用框架分解系列之——多样的Tag选择器

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

随机推荐

  1. 9.Java 加解密技术系列之 RSA

    Java 加解密技术系列之 RSA 序 概念 工作流程 RSA 代码实现 加解密结果 结束语 序 距 离上一次写博客感觉已经很长时间了,先吐槽一下,这个月以来,公司一直在加班,又是发版.上线,又是新项 ...

  2. java 上传2(使用java组件fileupload和uploadify)

    项目关键包和插件

  3. 利用EF ORM Mysql实体运行程序出错解决方案

    程序环境:VS2013 + mysql (server 5.7 + connector net 6.9.9 + for visual studio 1.2.6) + entity framework ...

  4. 四、 添加模型Model(ASP.NET MVC5 系列)

    在这一章节中我们将添加一些classes类来管理数据库中的movies.这些classes类就是ASP.NET MVC应用程序中的"model". 我们将用.NET框架中的数据访问 ...

  5. 基于Groovy应用程序的spring boot

    spring boot CLI 它是使用Spring Boot的最简单的和快速的的方法.他是一个基于Groovy脚本的命令工具.可以按照以下步骤安装次工具: 1.去spring官网下载 http:// ...

  6. iOS开发之 Lottie -- 炫酷的动效

    动效在软件开发中非常常见,炫酷的动画能提升应用的B格,然而由设计师的设计转化成程序猿GG的代码是个非常"痛苦"的过程.对于复杂动画,可能要花费很多时间去研究和实现.Lottie 的 ...

  7. Maven测试篇

     maven的生命周期: 讲解Maven测试篇之前将首先介绍一下Maven生命周期的相关概念,如果你熟知这部分概念可以略过此小节内容. 大多数时候,我们在构建一个项目时,不外乎是对其进行清理.编译.测 ...

  8. java基础之数组常用操作

    常用的对数组进行的操作 1.求数组中最大值,最小值 思路:假设下标为0的元素是最大值,遍历数组,依次跟max进行比较,如果有元素比这个max还大,则把这个值赋给max.最小值同样 public cla ...

  9. springMVC+Mybatis(使用AbstractRoutingDataSource实现多数据源切换时)事务管理未生效的解决办法

    业务场景: A.B两个单位,系统部署同一套代码: A.B两系统能相互访问: 要求将数据从A系统同步到B系统,再将反馈信息回发给A: 实际开发情况: 因为系统比较小,最开始设计架构的时候没有考虑到消息互 ...

  10. Eclipse中SVN设置文件为ignore后重新添加至版本控制

    先前把需要版本控制的文件夹ignore了,用了很长时间找解决方法,结果发现竟如此简单,对eclipse的功能不熟悉啊. 方法如下: 在Window->Show View -> Naviga ...