首页 新闻 会员 周边 捐助

C# 复制 GIF动画 问题

0
悬赏园豆:50 [已解决问题] 解决于 2009-09-04 12:58

C#、Winform程序,实现将本地一个GIF动画文件,通过程序复制,然后可以粘贴到QQ等聊天窗口里。类似在IE里复制后粘贴的功能。

Clipboard.SetImage();
Clipboard.SetData();
Clipboard.SetDataObject();

这几个方法都试过了,都不成功。
如果有高手看到此贴,请指教,非常感谢!

问题补充: 有没有用过API复制的? 我想试试API的方法,谢谢!
冰 河的主页 冰 河 | 初学一级 | 园豆:105
提问于:2009-08-31 17:18
< >
分享
最佳答案
0

直接复制动画导致不会动的原因可能是因为.Net默认不支持多帧的图像。

我进行了一些测试,发现这样可以复制动画文件到剪贴板:

 

 

        private void button1_Click(object sender, EventArgs e)
{
var GifFilePath
= @"C:\Users\Public\Downloads\0022.gif";
Clipboard.SetText(
string.Format(@"Version:0.9
StartHTML:00000176
EndHTML:00000326
StartFragment:00000210
EndFragment:00000290
SourceURL:file:///C:/Develop/ADITALL/MIXER/playerAS3/bin/sharp-copy-test.html
<html><body>
<!--StartFragment-->
<p><strong>AAA</strong><img src=""file:///{0}"" /></p>
<!--EndFragment-->
</body>
</html>
", GifFilePath.Replace("\\","/")), TextDataFormat.Html);
}

 

其原理就是变通地将包含动画的Html代码复制到剪切板内。

但具体为什么这么写我也不知道,没找到相关的剪贴板格式资料,以至于我修改SourceURL:file:///C:/Develop/ADITALL/MIXER/playerAS3/bin/sharp-copy-test.html为其他文件路径都会导致失效,很诡异~~
这个格式是从这里窥得的,你可以研究一下:
(经我个人测试,直接复制Html代码如“<img src="……">”到剪切板无效,粘贴时甚至可能引发目标程序崩溃,改动上述格式中的源文件路径也会引发同样结果-_-#)
收获园豆:30
斯克迪亚 | 老鸟四级 |园豆:4124 | 2009-08-31 22:16
这中方法我也尝试过,但粘贴的还是静态的图片,动画消失了,谢谢你!
冰 河 | 园豆:105 (初学一级) | 2009-09-01 09:43
其他回答(2)
0

修改下:

http://www.codeproject.com/KB/GDI-plus/NGif.aspx

应用 http://www.yaosansi.com/post/1325.html

 

园子里有一个开源的gif库

http://www.cnblogs.com/jillzhang/archive/2008/05/12/1128263.html

这是两个保存gif的例子
http://blog.csdn.net/wangyaobsz/archive/2007/11/19/1893238.aspx

http://www.codeproject.com/KB/GDI-plus/dotnet_convertimage.aspx

希望对你有帮助

核心处理流程是:

不要用gif图像直接生成graphics对象,  
  
  1、gif   分解成png或者jpg文件组;  
  2、对每个png或者jpg文件进行处理;  
  3、把处理好的png或者jpg文件组,进行合成一个gif。  

收获园豆:20
邀月 | 园豆:25475 (高人七级) | 2009-08-31 18:22
这位老大,这些方法都是C#自带的 Clipboard.SetImage();Clipboard.SetData();Clipboard.SetDataObject(); 这些我都试过了,复制GIF粘贴后,就变成静态的了
支持(0) 反对(0) 冰 河 | 园豆:105 (初学一级) | 2009-08-31 20:18
@冰 河:sorry,重新试了几个例子
支持(0) 反对(0) 邀月 | 园豆:25475 (高人七级) | 2009-09-01 00:47
非常感谢,可是我是想复制GIF动画到剪切板,然后在QQ之类的窗口中粘贴。
支持(0) 反对(0) 冰 河 | 园豆:105 (初学一级) | 2009-09-01 09:42
0

我实现的是拖动到QQ窗口,GIF是可以动画的。通过剪切板应该和拖动类似,我看了下 斯克迪亚 回答,思路应该就是这样的,通过复制粘贴HTML代码实现,把GIF的文件路径包含到HTML代码中。

HTML只需最核心的部分:

<!--StartFragment-->
<img src=""file:///{0}""/>
<!--EndFragment-->
{0}替换成你GIF的文件路径。

 

火必烈 | 园豆:227 (菜鸟二级) | 2012-06-03 23:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册