博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

[2014.01.27]wfGifAnimator 动画GIF组件 3.0

Posted on 2013-09-06 21:17  WFsoft  阅读(678)  评论(0编辑  收藏  举报

  组件支持设置GIF帧延时和获取GIF的帧延迟。
  组件支持添加或插入或更新帧(支持bmp/jpg/gif/wmf/emf/ico格式)、删除帧、清空帧操作。
  组件支持GIF动画缩放大小。
  组件支持绘制线段、矩形、圆形、椭圆以及绘制图片。
  组件支持往指定帧输出文字,绘制图片,自动缩放帧。
  组件绘制字体全部采用“逻辑采样”处理,字体边缘圆滑,且速度快。
  组件支持绘制线段、矩形、圆形、椭圆以及绘制图片。
  组件可设置每帧之间的停留时间,以“毫秒”记,即1秒=1000毫秒。
  本组件经过多种平台环境负荷压力测试,运行稳定、速度快、资源占用低。

 

组件效果图:

 

 

C#使用实例:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using wfGifAnimator;

namespace wfGifAnimator_Demo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //创建Com对象
            wfGifAnimatorObject objGifAnimator = new wfGifAnimatorObject();

            //创建wfGifAnimatorObject对象实体
            objGifAnimator.CreateObject();

            objGifAnimator.RegName = "";  //注册名
            objGifAnimator.RegSN = "";   //注册序列号

            //向动画组件中添加帧,参数为:图片路径(bmp/jpg/gif/wmf/emf/ico格式),该帧停留时间(以毫秒为单位,1秒=1000毫秒)
            objGifAnimator.AddFrame(Application.StartupPath + @"\pic\1.bmp", 300);
            objGifAnimator.AddFrame(Application.StartupPath + @"\pic\2.bmp", 300);
            objGifAnimator.AddFrame(Application.StartupPath + @"\pic\3.jpg", 300);
            objGifAnimator.AddFrame(Application.StartupPath + @"\pic\4.jpg", 300);
            objGifAnimator.AddFrame(Application.StartupPath + @"\pic\5.gif", 300);
            objGifAnimator.AddFrame(Application.StartupPath + @"\pic\6.gif", 300);

            for (int N = 0; N < objGifAnimator.FrameCount; N++)
            {
                //向第N帧绘制文字,参数依次为:帧的索引号,X坐标,Y坐标,文字内容,字体名称,字体大小,字体风格,字体颜色,字体背景颜色,字体旋转的角度
                //字体样式: 0默认,1加粗,2加斜,3加下划线,4加删除线,5加粗加斜,6加粗加下划线,7加粗加删除线,8加粗加斜加下划线,9加粗加斜加删除线,10加斜加下划线,11加斜加删除线
                objGifAnimator.DrawText(N, 160, 1, "万福软件", "Arial", 20, 1, "ff0000", "", 0);
                objGifAnimator.DrawText(N, 160, 31, "WFsoft.com", "Arial", 14, 1, "0000ff", "", 0);
            }

            /*
            //改变GIF动画到新的大小,参数为新GIF动画宽度和高度
            objGifAnimator.ResizeTo(200, 200);

            for (int N = 0; N < objGifAnimator.FrameCount; N++)
            {
                //保存GIF动画中的指定帧,参数为:帧的索引号,帧存放路径
                objGifAnimator.ExportFrame(N, @"C:\" + N.ToString() + ".bmp");
            }

            for (int N = 0; N < objGifAnimator.FrameCount; N++)
            {
                //获取GIF的帧延迟。
                MessageBox.Show(objGifAnimator.get_FrameDelayTime(N).ToString());
            }
            */

            //显示本组件名称,版本,作者,官方网站
            //MessageBox.Show(objGifAnimator.Software.ToString() + "\n" + objGifAnimator.Version.ToString() + "\n" + objGifAnimator.Author.ToString() + "\n" + objGifAnimator.Website.ToString());

            //动画的循环次数,默认为:-1为无限循环
            objGifAnimator.RepeatCount = -1;

            //输出的GIF动画图片到文件
            bool bolResult = (bool)objGifAnimator.get_SaveToFile(@"c:\wfGifAnimator_Demo1.gif");     //设置输出的GIF图片保存位置

            if (bolResult == true)
            {
                MessageBox.Show(@"图像保存成功,文件保存到:c:\wfGifAnimator_Demo1.gif");
            }
            else
            {
                MessageBox.Show("图像保存失败!");
            }

            objGifAnimator.Close();  //关闭本组件资源
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //创建Com对象
            wfGifAnimatorObject objGifAnimator = new wfGifAnimatorObject();

            //创建wfGifAnimatorObject对象实体
            objGifAnimator.CreateObject();

            objGifAnimator.RegName = "";  //注册名
            objGifAnimator.RegSN = "";   //注册序列号

            //载入一个已经存在的GIF进行编辑
            objGifAnimator.LoadFromFile(@"c:\demo1.gif");

            //获取GIF的总播放次数
            MessageBox.Show("总帧数:" + objGifAnimator.RepeatCount.ToString());

            for (int N = 0; N < objGifAnimator.FrameCount; N++)
            {
                //向第N帧绘制文字,参数依次为:帧的索引号,X坐标,Y坐标,文字内容,字体名称,字体大小,字体风格,字体颜色,字体背景颜色,字体旋转的角度
                //字体样式: 0默认,1加粗,2加斜,3加下划线,4加删除线,5加粗加斜,6加粗加下划线,7加粗加删除线,8加粗加斜加下划线,9加粗加斜加删除线,10加斜加下划线,11加斜加删除线
                objGifAnimator.DrawText(N, 160, 1, "万福软件", "Arial", 20, 1, "ff0000", "", 0);
                objGifAnimator.DrawText(N, 160, 31, "WFsoft.com", "Arial", 14, 1, "0000ff", "", 0);
            }

            /*
            //改变GIF动画到新的大小,参数为新GIF动画宽度和高度
            objGifAnimator.ResizeTo(200, 200);

            for (int N = 0; N < objGifAnimator.FrameCount; N++)
            {
                //保存GIF动画中的指定帧,参数为:帧的索引号,帧存放路径
                objGifAnimator.ExportFrame(N, @"C:\" + N.ToString() + ".bmp");
            }

            for (int N = 0; N < objGifAnimator.FrameCount; N++)
            {
                //获取GIF的帧延迟。
                MessageBox.Show(objGifAnimator.get_FrameDelayTime(N).ToString());
            }
            */

            //显示本组件名称,版本,作者,官方网站
            MessageBox.Show(objGifAnimator.Software.ToString() + "\n" + objGifAnimator.Version.ToString() + "\n" + objGifAnimator.Author.ToString() + "\n" + objGifAnimator.Website.ToString());

            //动画的循环次数,默认为:-1为无限循环
            objGifAnimator.RepeatCount = -1;

            //输出的GIF动画图片到文件
            bool bolResult = (bool)objGifAnimator.get_SaveToFile(@"c:\wfGifAnimator_Demo2.gif");     //设置输出的GIF图片保存位置

            if (bolResult == true)
            {
                MessageBox.Show(@"图像保存成功,文件保存到:c:\wfGifAnimator_Demo2.gif");
            }
            else
            {
                MessageBox.Show("图像保存失败!");
            }

            objGifAnimator.Close();  //关闭本组件资源
        }
    }
}


下载地址:

http://url.cn/KISPum

 

购买链接:

http://item.taobao.com/item.htm?spm=a1z10.1.w4004-4958980042.12.gASsff&id=36468591940