ImageCodecInfo[] codeInfo = ImageCodecInfo.GetImageEncoders();这一句是获取本机的图像编码器的,但是好像没有gif的  我怎么解决啊

解决方案 »

  1.   

    下面的示例旨在用于 Windows 窗体,它需要 PaintEventArgse(这是 Paint 事件处理程序的参数)。此代码使用 GetImageEncoders 方法从所有已安装的图像编码器和解码器中检索出所有解码器信息,然后在屏幕上显示每个解码器的所有信息。private void GetImageEncodersExample(PaintEventArgs e)
    {
                 
        // Get an array of available codecs.
        ImageCodecInfo[] myCodecs;
        myCodecs = ImageCodecInfo.GetImageEncoders();
        int numCodecs = myCodecs.GetLength(0);
                 
        //numCodecs = 1;
                 
        // Set up display variables.
        Color foreColor = Color.Black;
        Font font = new Font("Arial", 8);
        int i = 0;
                 
        // Check to determine whether any codecs were found.
        if(numCodecs > 0)
        {
                 
            // Set up an array to hold codec information. There are 9
                 
            // information elements plus 1 space for each codec, so 10 times
                 
            // the number of codecs found is allocated.
            string[] myCodecInfo = new string[numCodecs*10];
                 
            // Write all the codec information to the array.
            for(i=0;i<numCodecs;i++)
            {
                myCodecInfo[i*10] = "Codec Name = " + myCodecs[i].CodecName;
                myCodecInfo[(i*10)+1] = "Class ID = " +
                    myCodecs[i].Clsid.ToString();
                myCodecInfo[(i*10)+2] = "DLL Name = " + myCodecs[i].DllName;
                myCodecInfo[(i*10)+3] = "Filename Ext. = " +
                    myCodecs[i].FilenameExtension;
                myCodecInfo[(i*10)+4] = "Flags = " +
                    myCodecs[i].Flags.ToString();
                myCodecInfo[(i*10)+5] = "Format Descrip. = " +
                    myCodecs[i].FormatDescription;
                myCodecInfo[(i*10)+6] = "Format ID = " +
                    myCodecs[i].FormatID.ToString();
                myCodecInfo[(i*10)+7] = "MimeType = " + myCodecs[i].MimeType;
                myCodecInfo[(i*10)+8] = "Version = " +
                    myCodecs[i].Version.ToString();
                myCodecInfo[(i*10)+9] = " ";
            }
            int numMyCodecInfo = myCodecInfo.GetLength(0);
                 
            // Render all of the information to the screen.
            int j=20;
            for(i=0;i<numMyCodecInfo;i++)
            {
                e.Graphics.DrawString(myCodecInfo[i],
                    font,
                    new SolidBrush(foreColor),
                    20,
                    j);
                j+=12;
            }
        }
        else
            e.Graphics.DrawString("No Codecs Found",
                font,
                new SolidBrush(foreColor),
                20,
                20);
    }