Vorgehensweise: Auflisten installierter Encoder
Sie sollten die Codierer für Bilder auflisten, die auf einem Computer verfügbar sind, um zu bestimmten, ob Ihre Anwendung in einem bestimmten Bilddateiformat gespeichert werden kann. Die ImageCodecInfo-Klasse stellt die statischen GetImageEncoders-Methoden bereit, sodass Sie bestimmen können, welche Codierer für Bilder verfügbar sind. GetImageEncoders gibt ein Array von ImageCodecInfo-Objekten zurück.
Beispiel
Im folgenden Codebeispiel wird die Liste der installierten Encoder und deren Eigenschaftswerte ausgegeben.
private void GetImageEncodersExample(PaintEventArgs e)
{
// Get an array of available encoders.
ImageCodecInfo[] myCodecs;
myCodecs = ImageCodecInfo.GetImageEncoders();
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);
}
Private Sub GetImageEncodersExample(ByVal e As PaintEventArgs)
' Get an array of available encoders.
Dim myCodecs() As ImageCodecInfo
myCodecs = ImageCodecInfo.GetImageEncoders()
Dim numCodecs As Integer = myCodecs.GetLength(0)
' Set up display variables.
Dim foreColor As Color = Color.Black
Dim font As New Font("Arial", 8)
Dim i As Integer = 0
' Check to determine whether any codecs were found.
If numCodecs > 0 Then
' 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.
Dim myCodecInfo(numCodecs * 10) As String
' Write all the codec information to the array.
For i = 0 To numCodecs - 1
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)) = " "
Next i
Dim numMyCodecInfo As Integer = myCodecInfo.GetLength(0)
' Render all of the information to the screen.
Dim j As Integer = 20
For i = 0 To numMyCodecInfo - 1
e.Graphics.DrawString(myCodecInfo(i), _
font, New SolidBrush(foreColor), 20, j)
j += 12
Next i
Else
e.Graphics.DrawString("No Codecs Found", _
font, New SolidBrush(foreColor), 20, 20)
End If
End Sub
Kompilieren des Codes
Für dieses Beispiel benötigen Sie Folgendes:
Eine Windows Forms-Anwendung
Eine PaintEventArgs-Klasse, die einen Parameter von PaintEventHandler darstellt.
Weitere Informationen
.NET Desktop feedback