 |
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
SUBIK Wykształciuch
Dołączył: 27 Kwi 2006 Posty: 37
 |
Wysłany: Wto Maj 29, 2007 5:43 Temat postu: Borland C# Builder Personal - ImageList |
 |
|
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 _________________
 |
|
| |
|
|
|
 |
 |
 |
 |
 |
SATANFROMHELL Liberał
Dołączył: 28 Sty 2007 Posty: 270
 |
Wysłany: Pią Cze 01, 2007 20:34 Temat postu: |
 |
|
ładnie to łama prawa autorskie CipSoftu ...
// [mkl] ładnie to słać offtop? |
|
| |
|
|
|
 |
 |
 |
 |
 |
Sknerus
 |
Wysłany: Pią Cze 01, 2007 20:34 Temat postu: |
 |
|
|
|
|
| |
|
|
|
 |
 |
 |
 |
 |
SUBIK Wykształciuch
Dołączył: 27 Kwi 2006 Posty: 37
 |
Wysłany: Sob Cze 02, 2007 19:17 Temat postu: |
 |
|
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 _________________
 |
|
| |
|
|
|
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
|
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
|
|
|
 |