Forum mapaogame.net Strona Główna mapaogame.net
STARYM ZGREDOM NA ZŁOŚĆ



Borland C# Builder Personal - ImageList

 
Napisz nowy temat   Odpowiedz do tematu    Forum mapaogame.net Strona Główna -> C#, .NET, Java
Zobacz poprzedni temat :: Zobacz następny temat  
SUBIK
Wykształciuch


Dołączył: 27 Kwi 2006
Posty: 37

 PostWysłany: Wto Maj 29, 2007 5:43    Temat postu: Borland C# Builder Personal - ImageList Odpowiedz z cytatem Back to top

Od paru dni mecze ten problem, w dzialaniu programu nie przeszkadza jedynie estetycznie bardzo zle wyglada, ale do rzeczy mam zainicjowana jakas tam imagelist

Kod:
this.imageList1 = new System.Windows.Forms.ImageList();
this.imageList1.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
         this.imageList1.ImageSize = new System.Drawing.Size(this.RozmiarPola, this.RozmiarPola);
         this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
         this.imageList1.Images.Add(Image.FromFile("C://grafika//pustepole.png"));
         this.imageList1.Images.Add(Image.FromFile("C://grafika//sciana.png"));
         this.imageList1.Images.Add(Image.FromFile("C://grafika//kwiatek.png"));
(...)


nastepnie w trakcie dzialania programu wywolanie

Kod:
listBox2.Items.Clear();

         for (int i=0; i<Plansza.szerokosc; i++)
            for (int j=0; j<Plansza.wysokosc; j++)
            {
               plansza[i,j].BackgroundImage=imageList1.Images[Lokacje.StanPola(i,j)];
               if (Lokacje.CzyJestJakisPrzedmiot(i,j)>=0) plansza[i,j].BackgroundImage=imageList3.Images[Lokacje.CzyJestJakisPrzedmiot(i,j)];
            }

         plansza[Typ.PozX,Typ.PozY].BackgroundImage=imageList2.Images[0];

         if (Lokacje.CzyJestJakisPrzedmiot(Typ.PozX,Typ.PozY)>=0)
            for (int i=0; i<100; i++)
               if (Lokacje.CzyJestJakisPrzedmiotNaPozycji(i,Typ.PozX,Typ.PozY))
                  listBox2.Items.Add(Lokacje.JakieItemyLeza(Przedmiot,i,Typ.PozX,Typ.PozY));




przy czym lokacje sa powiazane z dynamicznie utworzonymi przyciskami

Kod:
for (int i=0; i<Plansza.szerokosc; i++)
            for (int j=0; j<Plansza.wysokosc; j++)
            {
               Button pole=new Button();
               pole.SetBounds(15+i*RozmiarPola,15+j*RozmiarPola,RozmiarPola,RozmiarPola);
               pole.Enabled = false;
               pole.Parent=this;
               plansza[i,j]=pole;
               this.tabPage1.Controls.Add(pole);
            }


moze i brzmi skomplikowanie ale problemem sa nachodzace na siebie obiekty wczytane do imagelist, widac to jedynie na transparentowanych obrazach, co zobaczyc mozna na zalaczonych obrazkach

probowalem juz bardzo wielu rzeczy ktorych nie jestem teraz nawet w stanie wymienic. m.in probowalem jeszcze raz nadpisywac odpowiednie komorki juz po wykonaniu petli z drugiego code, probowalem tez np za pomoca timera czyscic komorki i dopiero na czysto ladowac obrazki (ale to wyszlo jeszcze gorzej) tak jakby za kazdym razem program ladowal wszystkie obrazki z wszystkich imagelist do danej komorki - co wykluczam z kodu programu chyba ze imagelist tak wlasnie ma sie zachowywac (jezeli tak to to czy ma jakies metody na pominiecie tego - ( zabawa z tymi etykietami (ImageKey-o ile dobrze zrozumialem zastosowanie tego via help) troche namieszala by w kodzie wiec wole jakies rozwiazanie za pomoca opcji)
lub
mysle ze moze to byc problem buffora, tzn laduje do danej komorki plik ktory ladowal ostatnio plus ten co powinien teraz zaladowac. a moj problem polega na tym ze nie wiem ktora z metod (jezeli jest taka wogole) odpowiada za czyszczenie tego buffora


a po przejsciu w prawy gorny rog (sterowanie klawiatura)


a po przeniesieniu miecza na prawo (sterowanie myszka)


i przepraszam za jakies bledy albo jezeli czegos zapomnialem napisac bo jest 5 rano a czloiwek po nocce to tak srednio mysli:P
_________________

 
Ogląda profil użytkownika Wyślij prywatną wiadomość
SATANFROMHELL
Liberał


Dołączył: 28 Sty 2007
Posty: 270

 PostWysłany: Pią Cze 01, 2007 20:34    Temat postu: Odpowiedz z cytatem Back to top

ładnie to łama prawa autorskie CipSoftu ... Rolling Eyes

// [mkl] ładnie to słać offtop?
 
Ogląda profil użytkownika Wyślij prywatną wiadomość
Sknerus






 Wysłany: Pią Cze 01, 2007 20:34    Temat postu: Back to top

 
SUBIK
Wykształciuch


Dołączył: 27 Kwi 2006
Posty: 37

 PostWysłany: Sob Cze 02, 2007 19:17    Temat postu: Odpowiedz z cytatem Back to top

to moze troche inne podejscie

zalozmy ze mam pare obrazkow png (z transparentem)
chce uzyskac wynikowy obrazek typu System.Drawing.Image na ktorym beda namalowane kolejne wybrane przezemnie obrazki png

probowalem to zrobic tak

Kod:
System.Drawing.Image obrazek;
System.Drawing.Imaging.EncoderParameters Params = new System.Drawing.Imaging.EncoderParameters(1);
Params.Param[0] = new  System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);

obrazek=null;
obrazek=imageList1.Images[jakis_numer];
if (cos_tam) obrazek.SaveAdd(imageList5.Images[jakis_inny_numer],Params);


ale juz wiem ze nie tedy droga

a i wybaczcie za noobskie pytania ale z c# mam doczynienia dopiero od 3 tyg a malo poradnikow jest na ten temat a w dolaczonym przez borlanda helpie malo przykladow



wczesniej mialem
obrazek=(...);
(...)obrazek=(...);
(...)obrazek=(...);
ale wtedy dzieja sie dziwne rzeczy - obrazki sie nachodza (ktore byly malowane duzo wczesniej, wakby buffor sie nie czyscil)


jak ktos ma platforme net zainstalowana to zamieszczam moj program jakby ktos chcial zobaczyc o co dokladnie chodzi
http://rapidshare.com/files/34854006/grafika.rar.html
rozpakowac bezposrednio na C:/ sterowanie WASD reszta myszka, przedmioty z ziemi podnosi sie klikajac dwa razy na listbox pod mapa
_________________

 
Ogląda profil użytkownika Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum mapaogame.net Strona Główna -> C#, .NET, Java Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach