none
Bitmap in List<> speichern und ausgeben RRS feed

  • Allgemeine Diskussion

  • Ich möchte per Knopfdruck (Button) einen Screenshot meines Desktops erstellen, diesen in einer Liste speiern und bei bedarf die komplette Liste speichern.

    Diesen Code habe ich schon.

    private List<Bitmap> bmpList = new List<Bitmap>();
    
            ImageCodecInfo imageCodecNFO;
            System.Drawing.Imaging.Encoder encoder;
            EncoderParameter encoderParameter;
            EncoderParameters encoderParameters;
            int i = 0;
    
            public void captureScreen()
            {
                imageCodecNFO = GetEncoderInfo("image/bmp");
                encoder = System.Drawing.Imaging.Encoder.Quality;
                encoderParameters = new EncoderParameters(1);
                encoderParameter = new EncoderParameter(encoder, 50L);
                encoderParameters.Param[0] = encoderParameter;
    
                Bitmap b = new Bitmap(1280, 1024);
                Graphics g = Graphics.FromImage(b);
                g.CopyFromScreen(0, 0, 0, 0, b.Size);
                g.Dispose();
                bmpList.Add(b);
                //b.Save(@"D:\Images\img" + "_" + i.ToString("00") + ".bmp", imageCodecNFO, encoderParameters);
                b.Dispose();
                i++;
            }
    
            void getScreenshots()
            {
                foreach (Bitmap bmp in bmpList)
                {
                    bmp.Save(@"D:\Images\img" + "_" + i.ToString("00") + ".bmp");
                }
            }
    
            private static ImageCodecInfo GetEncoderInfo(String mimeType)
            {
                int j;
                ImageCodecInfo[] encoders;
                encoders = ImageCodecInfo.GetImageEncoders();
                for (j = 0; j < encoders.Length; ++j)
                {
                    if (encoders[j].MimeType == mimeType)
                        return encoders[j];
                }
                return null;
            }

    Wenn ich die Liste mit getScreenshots speichern will, erhalte ich eine "System.ArgumentException"

    (Eine nicht behandelte Ausnahme des Typs "System.ArgumentException" ist in System.Drawing.dll aufgetreten.

    Zusätzliche Informationen: Ungültiger Parameter.)

    Woran könnte das liegen?

    Ist mein Vorhaben eines "Bitmap zwischenspeichers" überhaubt möglich?

    Freitag, 20. Juli 2012 12:02

Alle Antworten