Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Prosím poraďte, potřebuji naplnit 45 PictureBoxů, hraji si s jednoduchými puzzlemi a dost si myslím, že by to mělo jít nějakým cyklem a ne takto:
pictureBox1.Image = new Bitmap(Properties.Resources.MF1);
pictureBox2.Image = new Bitmap(Properties.Resources.MF2);
pictureBox3.Image = new Bitmap(Properties.Resources.MF3);
pictureBox4.Image = new Bitmap(Properties.Resources.MF4);
pictureBox5.Image = new Bitmap(Properties.Resources.MF5);
pictureBox6.Image = new Bitmap(Properties.Resources.MF6);
pictureBox7.Image = new Bitmap(Properties.Resources.MF7);
pictureBox8.Image = new Bitmap(Properties.Resources.MF8);
pictureBox9.Image = new Bitmap(Properties.Resources.MF9);
...
pictureBox45.Image = new Bitmap(Properties.Resources.MF45);
Ale nevím, jak nahradit názvy pictureBoxů a obrázků proměnnou, umím si vyrobit příslušné stringy cyklem, ale nevím jak to pak použít v objektech?
Díky moc
Offline
Jdu spát, ale napadlo mě narychlo (ale nedělej to tak - názvy objektů nesmí být čísla, ani názvy proměnných, překladač to ale sežere):
for (int i = 1, int j = 1; i < 46; i++, j++) {
PictureBox i = new PictureBox();
Bitmap j = new Bitmap("C:\\Images\\" + j + ".jpg");
i.Image = (Image)j;
Controls.Add(i);
}Ještě je třeba nastavit pozice a další vlastnosti. ;-) Jinak pak jedině elegantně přes pole/kolekce, jak píše kolega Jookyn. :-) Další způsob (ten nejelegantnější) mě nenapadá, třeba někdo vymyslí... Docela v mne zatrnulo, když jsem na to kouknul, říkal jsem si jak je to lehká otázka a problém. A ono houbelec, ve výsledku je to složitější...
Tak ještě nejdu spát. :-D Dolepím tu poslední myšlenku:
for (int i = 1; i < 46; i++) {
PictureBox pictureBox = new PictureBox();
Image image = Image.FromFile("images/"+ i +".png");
pictureBox.Image = image;
pictureBox.Name = "mujobrazek" + i;
}Nebo s tou Bitmapou obdobně:
for (int i = 1, int j = 1; i < 46; i++, j++) {
PictureBox pictureBox = new PictureBox();
Bitmap bitmapa = new Bitmap("C:\\Images\\" + j + ".jpg");
pictureBox.Image = (Image)bitmapa;
pictureBox.Name = "mujobrazek" + i;
Controls.Add(picturebox);
}A ještě se tak hloupě zeptám, máte jiné nápady včetně implementace? Dobrou.
Offline
↑ RePRO: Díky moc, odpoledne vyzkouším. Moje původní myšlenka byla, že už ty PictureBoxy mám na formuláři a nechtělo se mi do nich přidávat ručně 45 různých obrázků, ale není problém je smazat a naházet je tam při spuštění programu.
Podívám se i na tu výše uvedenou možnost s polem (taky díky), ale to musím maličko dostudovat :)
Offline