Autor Beitrag
GURKE deluxe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 91
Erhaltene Danke: 1

Win 7 Home Premium x64, Win XP Home Edition v2002
C# Microsoft Visual C# 2010 Express
BeitragVerfasst: Mi 07.09.11 18:55 
Hallo,
Ich habe folgenden Code:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
private void alsBildSpeichernToolStripMenuItem_Click(object sender, EventArgs e)
{
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Filter = "Bmp Dateien (*.Bmp)|*.Bmp|Emf Dateien (*.Emf)|*.Emf|Exif Dateien (*.exif)|*.exif|" +
        "Gif Dateien (*.Gif)|*.Gif|Jpeg Dateien (*.Jpeg)|*.Jpeg|Png Dateien (*.Png)|*.Png|" +
        "Tiff Dateien (*.Tiff)|*.Tiff|Wmf Dateien (*.Wmf)|*.Wmf|Alle Dateien (*.*)|*.*";
    try
    {
        if (sfd.ShowDialog() == DialogResult.OK)
        {
            Bitmap myBitmap = new Bitmap(this.Size.Width, this.Size.Height);
            this.DrawToBitmap(myBitmap, new Rectangle(00this.Width, this.Height));
            Bitmap myBitmap2 = myBitmap.Clone(new Rectangle(205667 + 121 * (5 + (SAStundenAufbau.SamstagsUnterricht ? 1 : 0) + (SAStundenAufbau.SonntagsUnterricht ? 1 : 0)), SAStundenAufbau.Stunden.Count() * 42 + 23), System.Drawing.Imaging.PixelFormat.Undefined);
            if (sfd.FilterIndex == 1)
                myBitmap2.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
            else if (sfd.FilterIndex == 2)
                myBitmap2.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Emf);
            else if (sfd.FilterIndex == 3)
                myBitmap2.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Exif);
            else if (sfd.FilterIndex == 4)
                myBitmap2.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Gif);
            else if (sfd.FilterIndex == 5)
                myBitmap2.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
            else if (sfd.FilterIndex == 6)
                myBitmap2.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Png);
            else if (sfd.FilterIndex == 7)
                myBitmap2.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Tiff);
            else if (sfd.FilterIndex == 8)
                myBitmap2.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Wmf);
            MessageBox.Show("\"" + sfd.FileName + "\" wurde erfolgreich gespeichert.");
        }
    }
    catch
    {
        MessageBox.Show("\"" + sfd.FileName + "\" konnte nicht gespeichert werden!");
    }
}


In dem Code wird ein Teil der Form als Bild abgespeichert. Man hat eine relativ große Auswahl an Dateitypen.

Nun finde ich das mit dem 8 "else if"s relativ unschön. Gibt es in irgendeiner Weise folgendes:
ausblenden C#-Quelltext
1:
2:
string Dateiendung = "Bmp";
myBitmap2.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.FromName(Dateiendung));


Sodass es durch die Dateiendung direkt auf das Imageformat schließen kann.

Gruß
Julian
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 08.09.11 10:08 
Hallo,

leg doch einfach ein Array davon an:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
using System.Drawing.Imaging;

ImageFormat[] imageFormats = new ImageFormat[]
{
  ImageFormat.Bmp, ImageFormat.Emf, ...
};

und greife dann mit dem Index (null-basiert) darauf zu.
Direkt über die Dateiendung würde ich nicht gehen, da z.B. "jpg" ja auch eine Standard-Extension für "Jpeg"-Dateien (oder "tif" für "Tiff"-Dateien) ist.
Somit würde ich zumindestens diese beiden Endungen noch zu deinem Filter hinzufügen.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 08.09.11 15:08 
user profile iconGURKE deluxe hat folgendes geschrieben Zum zitierten Posting springen:
Sodass es durch die Dateiendung direkt auf das Imageformat schließen kann.
Tut das die Bitmap-Klasse nicht automatisch :gruebel: ?

_________________
>λ=