PictureBox tworzenie dynamicznie

Odpowiedz Nowy wątek
2011-07-22 22:04
WuWu
0

Witam

Chciałbym móc tworzyć pictureboxy dynamicznie, chodzi mi mniej więcej o takie coś, że wczytuje z dysku obrazek i wrzucam go do pictureboxa (ewentualnie jeszcze na listę) następnie wciskam przycisk i wrzucam kolejny obrazek na nastęnego pictueboxa i chodzi mi to, żeby tworzyły się one pod sobą. Wiem ja kwrzucić z dysku obrazek wiem jak go załadowadc na pcitureboxa, ale nie mam pojęcia jak zrobić takie coś.

Pozostało 580 znaków

2011-07-22 22:14
0
WuWu napisał(a)

Witam

Chciałbym móc tworzyć pictureboxy dynamicznie
ależ możesz, a na necie jest od metra tutoriali jak tworzyć komponenty dynamicznie


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2011-07-22 23:30
WuWu
0

Ok, trochę się źle wyraziłem wiem jak storzyć dynamicznego pictureboxa, ale nie wiem jak zrobić żeby wczytywać obrazki wybrane z dysku twardego... używając dynamicznych pciture boxów bo dla pojedyńczego potrafie. Chodzi o to, żeby wczytywać kolejne obrazki które będą umieszcane pod soba jeden pod drugim.

Pozostało 580 znaków

2011-07-23 00:18
0

dalej nie wiem z czym masz problem - potrafisz wczytać z kodu obrazek do PB rzuconego na formę? - w stworzonym dynamicznie robi się to tak samo. Napisałeś, że stworzyć też potrafisz więc z czym masz problem?


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2011-07-23 12:33
0

Chyba chodzi Ci o coś takiego:

  1. Podajesz programowi ścieżkę
  2. On sprawdza czy w danym katalogu są obrazki: http://msdn.microsoft.com/en-us/library/wz42302f.aspx
  3. Jeśli są to je wczytuje i tworzy dynamicznie

Pozostało 580 znaków

2011-07-23 13:00
0

Jeżeli Ci chodzi i konkretne przypisanie obrazka do PictureBox'a to zrób klasę oddzielną i tam miej index PictureBox'a (aktualnej instancji) i sam PictureBox. Tworzysz sobie ileś tam instancji i teraz zrób sobie inną statyczną klasę albo zwykłą tablicę, gdzie będziesz trzymał dla każdego indexu (0...n) inną ścieżkę do pliku lub sobie połącz index z nazwą pliku, że dla instancji "4" wczytuje "4.bmp".


<error>There was an error during loading user signature. Please try to reboot the Universe and check again.</error>

Pozostało 580 znaków

2011-07-23 13:35
WuWu
0

Może trochę źle to ująłem... Chodzi mi o to, że mam przycisk powiedzmy "dodaj" i teraz tworzę możliwość wybrania konkretnego pliku (obrazka jpg/bmp) przy użyciu OpenFileDialog
"OpenFileDialog okienkoWczytaniaPliku = new OpenFileDialog();". I teraz chcę wrzucic to sobie np. z lewej strony u góry na formę do pictureboxa, następnie jeśli będę chciał dodać następny obrazek wciskam "dodaj" i dodaje mi ten obrazek do kolejnego pictureboxa, który jest tworzony w momencie dodania kolejnego pliku i umieszczazny pod wczesniejszym pictureboxem przy czym ten wcześniejszy obrazek jest zachowany czyli mamy dwa obrazki pod sobą.

Pozostało 580 znaków

2011-07-23 13:43
0

Zrób więc konstruktor z nazwą obrazka i wczytuj z OpenFileDialog.FileName do konstruktora tą właśnie nazwę. (opisuję to wg mojej klasy) Teraz w konstruktorze ładuję sobie np. prywatne pole Picture na plik z parametru, który jest nazwą obrazka. PictureBox dodaję na formę i gotowe. A co do wyświetlania następnego obrazka pod spodem, to tak:
Pobieram wysokość poprzedniego obrazka (to też możesz wwalić do jakieś zmiennej) i dodaję do tego tzw. spacing czyli odległość między czymś a czymś np. 10px i w tych współrzędnych wyświetlam drugi PictureBox, przyczym pierw tworzę nową instancję i to samo co na początku. Już dokładniej się nie da :)


<error>There was an error during loading user signature. Please try to reboot the Universe and check again.</error>

Pozostało 580 znaków

2011-07-23 15:17
0

http://pyp.net.pl/source/4e1827bd6452e nie dawno pisalem prosta przegladarke zdjec...zlukaj sobie wszystkiego tam nie ma...ale zawsze cos


Pozostało 580 znaków

2011-07-23 15:48
WuWu
0

Powiedzmy, że pocześci sobie poradziłem, zrobiłem coś takiego. Teraz chciałbym aby dodawać kolejne obrazki poniżej teg pierwszego, ale jakoś mam problem z poradzeniem sobie z tym. A i jeszce jak umieścić to na Panelu(panel1)?


 if (okienkoWczytaniaPliku.ShowDialog() == DialogResult.OK)
            {  
               int pozycjaX, pozycjaY;
               pozycjaX = 30;
               pozycjaY = 60;
               int ile = 10;
               for (int indeksObrazka = 0; indeksObrazka < ile; indeksObrazka++)
               {
                   PictureBox box = new PictureBox();
                   box.Top = 200;
                   box.Width = 220;
                   box.Height = 250;
                   box.Left = 100;
                   box.SizeMode = PictureBoxSizeMode.StretchImage;

                   for (int i=1; i<=ile; i++)
                   box.Location = new System.Drawing.Point(pozycjaX, pozycjaY);
                   Controls.Add(box);
                   box.Image = Image.FromFile(okienkoWczytaniaPliku.FileName);

Pozostało 580 znaków

2011-07-23 15:49
WuWu
0

sorry tutaj poprawny kod

 OpenFileDialog okienkoWczytaniaPliku = new OpenFileDialog();
            okienkoWczytaniaPliku.Filter = "Pliki graficzne (jpg)|*.jpg|Pliki graficzne (bmp)|*.bmp";

            if (okienkoWczytaniaPliku.ShowDialog() == DialogResult.OK)
            {  
               int pozycjaX, pozycjaY;
               pozycjaX = 30;
               pozycjaY = 60;
               int ile = 10;
               for (int indeksObrazka = 0; indeksObrazka < ile; indeksObrazka++)
               {
                   PictureBox box = new PictureBox();
                   box.Top = 200;
                   box.Width = 220;
                   box.Height = 250;
                   box.Left = 100;
                   box.SizeMode = PictureBoxSizeMode.StretchImage;

                   for (int i=1; i<=ile; i++)
                   box.Location = new System.Drawing.Point(pozycjaX, pozycjaY);
                   Controls.Add(box);
                   box.Image = Image.FromFile(okienkoWczytaniaPliku.FileName);
}

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0