Практическое руководство. Получение списка установленных декодеров
Может потребоваться списке декодеров на компьютере, чтобы определить, является ли ваше приложение может считывать определенного файла формата изображений. ImageCodecInfo Класс предоставляет GetImageDecoders статические методы, чтобы определить, какой образ декодеров доступны. GetImageDecoders Возвращает массив ImageCodecInfo объектов.
Пример
В следующем примере кода выводит список установленных декодеров и значения их свойств.
private void GetImageDecodersExample(PaintEventArgs e)
{
// Get an array of available decoders.
ImageCodecInfo[] myCodecs;
myCodecs = ImageCodecInfo.GetImageDecoders();
int numCodecs = myCodecs.GetLength(0);
// 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);
}
Компиляция кода
Для этого примера требуются:
приложение Windows Forms;
Объект PaintEventArgs, который является параметром PaintEventHandler.