Využij akce až 80% zdarma při nákupu e-learningu. Více informací .
BF summer
Avatar
Matyáš Černohous:21.1.2014 20:34

Zdravím, chtěl bych obrázek z aplikace, který je v pictureboxu, uložit na disk. Problém je v tom, že pictureBoxy přidávám až v aplikaci, podle počtu obrázků. Chtěl jsem to udělat takhle:

SaveFileDialog sfd = new SaveFileDialog();
                sfd.Filter = "Images|*.png;*.bmp;*.jpg";

                ImageFormat format = ImageFormat.Png;
                if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    string ext = System.IO.Path.GetExtension(sfd.FileName);
                    switch (ext)
                    {
                        case ".jpg":
                            format = ImageFormat.Jpeg;
                            break;
                        case ".bmp":
                            format = ImageFormat.Bmp;
                            break;
                    }
                  picturebox.Image.Save(sfd.FileName, format);
                }

Problém je v tom, že já nemám v aplikaci zatím vytvořený ani jeden picturebox, takže mi to v

picturebox.Image.Save(sfd.FileName, format);

hlásí chybu. Nevíte jak by se to dalo udělat jinak, abych tam mohl hodit zatím neexistující picturebox ?
Díky

Editováno 21.1.2014 20:34
 
Odpovědět
21.1.2014 20:34
Avatar
Odpovídá na Matyáš Černohous
Michal Žůrek - misaz:21.1.2014 21:26

tak snad je máš v nějaké kolekci, ověříš jejich počet a pustíš to pouze pokud jich je víc než 0.

 
Nahoru Odpovědět
21.1.2014 21:26
Avatar
Odpovídá na Michal Žůrek - misaz
Matyáš Černohous:22.1.2014 16:38

Oh, to mě nenapadlo. Díky :)...

Měl bych ještě jeden problém. Obrázky tam dostávám pomocí Drag and Drop. Vytvořil jsem si lisst, kam chci ukládat cesty k obrázkům.

List<string> CestakObr = new List<string>();

a když uživatel přetáhne obrázek, tak tam přidám cestu k souboru

string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
           foreach (string filePath in files)
           {

               AddPb(filePath, PictureX);
               CestakObr.Add(filePath);
           }

ale když chci ten list vypsat richTextBoxu, tak se mi tam vypíše pouze cesta k poslednímu obrázku i když jsem jich tam vložil třeba 8.

foreach (object item in CestakObr)
           {
               richTextBox1.Text = item.ToString();
           }

Díky

 
Nahoru Odpovědět
22.1.2014 16:38
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Matyáš Černohous
Jan Vargovský:22.1.2014 16:42

Si to debugni co ti tam přijde v těch datech, jestli je to opravdu pole a co v něm je.

 
Nahoru Odpovědět
22.1.2014 16:42
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Jan Vargovský
Matyáš Černohous:22.1.2014 20:11

Je zajímavé, že pokud list vypisuji do ListBoxu pomocí

foreach (object item in CestakObr)
           {
               listBox2.Items.Add(item.ToString());
           }

tak to funugje, ale když to chci vypsat jinam, tak ne...

 
Nahoru Odpovědět
22.1.2014 20:11
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Matyáš Černohous
Jan Vargovský:22.1.2014 20:28

Teď koukám na ten poslední příspěvek. Dáváš všechno do RichTextBoxu, ale vždycky nastavíš jen jednu cestu.
Takže změn:

foreach (object item in CestakObr)
            {
                richTextBox1.Text = item.ToString();
            }

Na:

foreach (object item in CestakObr)
            {
                richTextBox1.Text += item.ToString() + Environment.NewLine;
            }
 
Nahoru Odpovědět
22.1.2014 20:28
Avatar
Odpovídá na Jan Vargovský
Matyáš Černohous:22.1.2014 21:28

Díky :), jsem si říkal, že chyba bude asi v tomhle, ale nevěděl jsem jak to upravit...

 
Nahoru Odpovědět
22.1.2014 21:28
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.