直接复制动画导致不会动的原因可能是因为.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代码复制到剪切板内。
修改下:
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。
我实现的是拖动到QQ窗口,GIF是可以动画的。通过剪切板应该和拖动类似,我看了下 斯克迪亚 回答,思路应该就是这样的,通过复制粘贴HTML代码实现,把GIF的文件路径包含到HTML代码中。
HTML只需最核心的部分:
<!--StartFragment-->
<img src=""file:///{0}""/>
<!--EndFragment-->
{0}替换成你GIF的文件路径。