Bitmap bit = new Bitmap(36,50);
            Graphics g = Graphics.FromImage(bit);
            Image img = Image.FromFile(@"D:\tool\2005\demo\battery1.gif");
            g.FillRectangle(Brushes.Transparent, 0, 0, bit.Width, bit.Height);
            g.DrawImage(img, 0, 7);
            //ImageAttributes ii = new ImageAttributes();            for (int i = 0; i < bit.Width; i++)
            {
                for (int j = 0; j < bit.Height; j++)
                {
                    string s = System.Convert.ToString(bit.GetPixel(i, j));
                    string s1 = s.Substring(s.IndexOf("=") + 1);
                    string s2 = s1.Substring(0, s1.IndexOf(","));
                    if (!s2.Equals("0"))
                    {
                        //bit.SetPixel(i, j, Color.FromArgb(0,0,0,0));
                        bit.SetPixel(i, j, Color.Black);
                    }
                }
            }
            //ImageCodecInfo[] ii = ImageCodecInfo.GetImageDecoders();
            ImageCodecInfo[] codeInfo = ImageCodecInfo.GetImageEncoders();
            EncoderParameters en = new EncoderParameters(1);
            EncoderParameter p = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 0);
            en.Param[0] = p;
            bit.Save(@"D:\tool\2005\demo\Demo.gif", codeInfo[3],en);
            //bit.Save(@"D:\tool\2005\demo\a.gif",System.Drawing.Imaging.ImageFormat.Gif);
            g.Dispose(); 
            img.Dispose();
            bit.Dispose();我的原始素材battery1.gif是正确的GIF格式的,但是我经过上面的程序导出来以后就变成其他格式了用图片编译器看的,有高手可以提示下吗
我原始battery1.gif的尺寸是36*36,这个程序是要吧他做成36*50的,图片背景为透明色,不允许黑色背景

解决方案 »

  1.   

    背景透明:
    http://www.bhcode.net/article_soft/1304.html
    大小变换
     public static Bitmap ResizeImage(Bitmap bmp, int newW, int newH)
            {
                try
                {
                    Bitmap b = new Bitmap(newW, newH);
                    Graphics g = Graphics.FromImage(b);                g.InterpolationMode = InterpolationMode.HighQualityBicubic;                g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel);
                    g.Dispose();                return b;
                }
                catch
                {
                    return null;
                }
            }