Hi,
ich speichere den Inhalt einer PictureBox mit folgendem Code:
private void ToolStMnuItemGrafSp_Click(object sender, EventArgs e)
{
string Pfad = @"D:\\Progs\\MTSpannung\\Grafiken\\";
SaveFileDialog sFD = new SaveFileDialog();
sFD.Filter = "jpg files (*.JPG)|*.jpg|png files (*.PNG)|*.png";
sFD.InitialDirectory = Pfad;
Bitmap img = new Bitmap(PicBox1.Width + 10, PicBox1.Height + 10);
PicBox1.DrawToBitmap(img, new Rectangle(0, 0, PicBox1.Width, PicBox1.Height));
if (sFD.ShowDialog() == DialogResult.OK)
{
Pfad = sFD.FileName;
try
{
if (sFD.Filter.Contains("jpg"))
{
img.Save(Pfad, ImageFormat.Jpeg);
}
else if (sFD.Filter.Contains("png"))
{
img.Save(Pfad, ImageFormat.Png);
}
}
catch (Exception SaveException)
{
MessageBox.Show("Verzeichnisauswahl ungültig!\n\n\nCode:\n"
+ SaveException.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
Die so erzeugten Bilddateien werden zwar in anderen Grafikprogrammen korrekt angezeigt, jedoch erscheint bei Dateien, die nicht im jpeg-Format gespeichert wurden, die im Anhang ausgewiesene Fehlermeldung. Offenbar wird also in C# keine Konvertierung vorgenommen. Kann mir jemand sagen, warum das so ist und wie der Fehler abgestellt werden kann? VielenDank.
Hi renzH,
was sagt denn sfd.Filter wenn du einen entsprechenden Breakpoint setzt?
Ist schon eine Weile her, aber ich vermute du prüfst die falsche Property.
Path.GetExtension(sFD.FileName)
Sollte dir das korrekte Ergebnis geben. In Filter steht immer der Filter.
Ist schon eine Weile her, aber ich vermute du prüfst die falsche Property.
So ist es.
Filter enthält alle Auswahlmöglichkeiten. Du musst die FilterIndex Property verwenden. (Der Startindex ist 1).
Hi Papst, vielen Dank für die schnelle Antwort. Die Auswahl über if(sFD.FilterIndex == 1) und if(sFD.FilterIndex == 2) löst das Problem. Dank auch an Spook!