主题:与bcahzvip兄商榷gif例子
一江秋水
[专家分:9680] 发布于 2009-03-03 20:59:00
因为我不知道如何在回帖中带附件,所以只好发新贴。
我对你的那个代码进行了一点改动,主要有:
1.将两个类合并成一个
2.可以打开单帧图片了
3.有的图片帧延迟时间为0,原代码不能进行动画,现在可以了
4.原窗体标题栏显示的帧计数不正确,现已改正
附上单帧GIF图片6.gif和帧延迟时间为0的4.gif,供试验。
那个tlb文件我没有放进来。
回复列表 (共7个回复)
沙发
bcahzvip [专家分:6040] 发布于 2009-03-04 10:04:00
看来主要还是第3个问题呀!~
dim bDefFramePauseTime as boolean
ReDim m_nFramePauseTimes(0 To m_nFrameCount - 1)
For i = 0 To m_nFrameCount - 1
CopyMemory m_nFramePauseTimes(i), ByVal (m_pPropertyItem(0).ValuePtr + i * 4), 4
m_nFramePauseTimes(i) = m_nFramePauseTimes(i) * 10
If 0 = m_nFramePauseTimes(i) Then bDefFramePauseTime = True
If bDefFramePauseTime Then
CopyMemory m_nFramePauseTimes(i), ByVal (m_pPropertyItem(0).ValuePtr + (m_nFrameCount - 1) * 4), 4
End If
Next
m_nActiveFramePauseTime = m_nFramePauseTimes(0)
[url=http://bbs.pfan.cn/downfile.asp?fileid=3287]修改了点错误。m(_ _)m[/url]
板凳
一江秋水 [专家分:9680] 发布于 2009-03-04 11:30:00
嗯,这样一次性解决要比每次都比较一下好,就用你这改正的了。
建议还可以去掉那个布尔变量,改为:
If 0 = m_nFramePauseTimes(i) Then
CopyMemory m_nFramePauseTimes(i), ByVal (m_pPropertyItem(0).ValuePtr + (m_nFrameCount - 1) * 4), 4
End If
3 楼
bcahzvip [专家分:6040] 发布于 2009-03-04 15:10:00
最后一个值将会乘上10.
4 楼
一江秋水 [专家分:9680] 发布于 2009-03-05 17:06:00
还有一个问题:闪动得厉害,这是CLS语句造成的。我尝试把图像显示在图片框,再用BitBlt函数复制到窗体,这样就不会有闪动,但要这样做的话,图片框就要隐藏,而图片框一隐藏,上面的图像就没有了,复制到窗体就是一片空白。不知bcahzvip兄可有解决办法?
5 楼
bcahzvip [专家分:6040] 发布于 2009-03-05 18:42:00
恩,是个问题,还很严重,GDI+也不是做动画的料。
我对DC的了解就只有少量的片断。根本就是一知半解。看了资料还是很抽象。 = =;
........................吃饭再来搞。能不能解决都会回来。 m(_ _)m
6 楼
bcahzvip [专家分:6040] 发布于 2009-03-05 23:42:00
'现在才发现。“最后一个值将会乘上10.”才是正确。 = =;
Public Function DrawFrameGIFEx(ByVal hdc&) As Boolean
Dim hBitmap As Long
Dim hdcMemory As Long
If m_pImage = 0 Then Exit Function
hdcMemory = CreateCompatibleDC(hdc)
Select Case GdipCreateHBITMAPFromBitmap(m_pImage, hBitmap, RGB(&HFF, 0, 0)) ' m(_ _)m 不是红色吗?
Case GpStatus.Ok
SelectObject hdcMemory, hBitmap
BitBlt hdc&, m_nx, m_ny, m_nWidth, m_nHeight, hdcMemory, 0, 0, vbSrcCopy
DeleteObject hBitmap
DrawFrameGIFEx = True
End Select
DeleteDC hdcMemory
End Function
7 楼
一江秋水 [专家分:9680] 发布于 2009-03-07 10:48:00
好,又进了一步。美中不足的是,背景色不是容器的背景色。
我来回复