`

gif 渐变动画 .net

    博客分类:
  • .net
 
阅读更多
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace giftest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
               
/// <summary>
/// [颜色:RGB转成16进制]
/// </summary>
/// <param name="R">红 int</param>
/// <param name="G">绿 int</param>
/// <param name="B">蓝 int</param>
/// <returns></returns>
public static string colorRGBtoHx16(int R, int G, int B)
{
return System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.FromArgb(R, G, B));
}


private static string ToHexColor(Color color)
{
string R = Convert.ToString(color.R, 16);
if (R == "0")
R = "00";
string G = Convert.ToString(color.G, 16);
if (G == "0")
G = "00";
string B = Convert.ToString(color.B, 16);
if (B == "0")
B = "00";
string HexColor = "#" + R + G + B;
return HexColor;
}

       public static Color retrieveRGBComponent(int color)
         {  
              var r = color >> 16;  
              var g = (color >> 8) & 0xff;  
              var b = color & 0xff;

             
              return Color.FromArgb(r,g,b);
          }  
             
           /** 
            * 红色,绿色和蓝色三色组合 
            */
         public static Color generateFromRGBComponent(Color rgb)
           {  
               if( rgb == null ||
                   rgb.R < 0 || rgb.R > 255 ||
                   rgb.G < 0 || rgb.G > 255 ||
                   rgb.B < 0 || rgb.B > 255)  
                   return Color.Black;
               return rgb;
           }  
             
           /** 
            * color1是浅色,color2是深色,实现渐变 
            * steps是指在多大的区域中渐变, 
            */
         public static List<Color> generateTransitionalColor(Color color1, Color color2, int steps)  
           {
               List<Color> colors = new List<Color>();
               if( steps < 3 )  
                {   
                   return null;
                }
               Color color1RGB = color1;
               Color color2RGB = color2;  
                 
               
               colors.Add(color1);  
               steps = steps - 2;  
                 
               var redDiff = color2RGB.R - color1RGB.R;  
               var greenDiff = color2RGB.G - color1RGB.G;  
               var blueDiff = color2RGB.B - color1RGB.B;  
               for( var i = 1; i < steps - 1; i++)  
               {
                   var tempRGB = Color.FromArgb(
                       color1RGB.R + redDiff * i / steps,  
                       color1RGB.G + greenDiff * i / steps,  
                       color1RGB.B + blueDiff * i / steps  
                  );

                  colors.Add(tempRGB);  
               }
               colors.Add(color2);  
                 
               return colors;  
           }  

        //生成动画代码
        private void button1_Click(object sender, EventArgs e)
        {
            AnimatedGifEncoder gif = new AnimatedGifEncoder();
            gif.Start("hello.gif");
            gif.SetRepeat(0);
            gif.SetDelay(400);
            gif.SetFrameRate(24);
            
            //生成渐变颜色数据
            List<Color> colors = generateTransitionalColor(Color.Blue, Color.Red, 30);
            List<Color> colors2 = generateTransitionalColor(Color.GreenYellow, Color.Red, 30);
            int index=0;
            foreach (Color color in colors)
            {
                Bitmap bit = new Bitmap(200, 100);//2个100*100的渐变图片
                Graphics g=Graphics.FromImage(bit);
             
                g.FillRectangle(new SolidBrush(color), 0, 0, 100, 100);
                g.FillRectangle(new SolidBrush(colors2[index]), 100, 0, 100, 100);
                index++;
                gif.AddFrame(bit);
                g.Dispose();
                bit.Dispose();
            }
            gif.Finish();

            
        }
    }
}

 

 

 

  • 大小: 34.3 KB
分享到:
评论

相关推荐

    JS实现的透明度渐变动画效果示例

    本文实例讲述了JS实现的透明度渐变动画效果。分享给大家供大家参考,具体如下: &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="utf-8"&gt; &lt;title&gt;www.jb51.net JS透明度变化效果&lt;/...

    C#.net_经典编程例子400个

    28 实例028 为触摸屏程序添加虚拟键盘 29 1.8 窗体效果 30 实例029 半透明渐显窗体 31 实例030 窗口颜色的渐变 32 1.9 窗体动画 33 实例031 窗体中的滚动字幕 33 实例032 动画...

    Visual C#.NET 2008程序设计案例集锦 (源码)

    案例1.5 半透明渐显动画和渐变窗体 案例1.6 浮动的窗体 案例1.7 在屏幕中央并总在最前窗体 案例1.8 椭圆形窗体 案例1.9 可移动的五边形窗体 案例1.10 文字窗体 案例1.11 动态滑入滑出的闪烁窗体 案例1.12 以...

    关于计算机毕业实习报告介绍.docx

    关于计算机毕业实习报告介绍全文共5页,当前为第1页。... 单击"星座物语",进入内容左侧的字体是fireworks编辑的gif动画。左侧下方是篇有关星座的文章,右侧的星座专题有三个关于星座的内容可单击。'漂亮穿

    Visual C++ 程序开发范例宝典 源码 光盘 part2

    119 利用Image控件制作小动画 cc实例120 透明的Flash动画 cc实例121 播放GIF动画 cc实例122 播放AVI动画 cc实例123 播放VCD 4.2 制作与播放音频 cc实例124 可以选择播放曲目的CD播放器 cc实例125 MP3...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例183 使窗体背景色渐变 236 实例184 随机更换主界面背景 237 实例185 磁性窗体的设计 238 实例186 制作鼠标穿透窗体 246 实例187 窗体换肤程序 247 8.4 窗体动画 250 实例188 窗体中的滚动字幕 250 实例189 动画...

    C#程序开发范例宝典(第2版).part13

    实例188 播放GIF动画 273 实例189 利用Image制作小动画 274 5.4 媒体控制 275 实例190 检测是否安装声卡 275 实例191 打开和关闭CDROM 276 实例192 控制PC喇叭发声 277 实例193 获取显示设备的名称及...

    C#程序开发范例宝典(第2版).part08

    实例188 播放GIF动画 273 实例189 利用Image制作小动画 274 5.4 媒体控制 275 实例190 检测是否安装声卡 275 实例191 打开和关闭CDROM 276 实例192 控制PC喇叭发声 277 实例193 获取显示设备的名称及...

    C#程序开发范例宝典(第2版).part02

    实例188 播放GIF动画 273 实例189 利用Image制作小动画 274 5.4 媒体控制 275 实例190 检测是否安装声卡 275 实例191 打开和关闭CDROM 276 实例192 控制PC喇叭发声 277 实例193 获取显示设备的名称及...

    C#程序开发范例宝典(第2版).part12

    实例188 播放GIF动画 273 实例189 利用Image制作小动画 274 5.4 媒体控制 275 实例190 检测是否安装声卡 275 实例191 打开和关闭CDROM 276 实例192 控制PC喇叭发声 277 实例193 获取显示设备的名称及...

Global site tag (gtag.js) - Google Analytics