C# silnik 2D

Witam, ostatnio naszła mnie ochota na napisanie silnika do gier 2D. no i mam taki oto problem na samym początku, mam plik *.bmp w którym znajduje się grafika terenu w klockach 32x32 i nie wiem jak sobie poradzić z tym, żeby jakkolwiek pociąć tą grafikę na oddzielne klocki. Na razie grafika jest ładowana do obiektu Bitmap i teraz nie wiem jak utworzyć z tego obiektu kilka mniejszych obiektów z których później będę układał teren. Myślę, że opisałem to w miarę zrozumiale?

Odpowiedzi: 7

Mam kolejny problem a mianowicie chodzi mi o przeźroczystość. Jak już mam [b]PictureBox'a[/b] z moim bohaterem który będzie się poruszał po [b]PictureBox'ie[/b] z terenem. Z góry ustalam że w grafice z bohaterem pola w kolorze 100% bieli będą przeźroczyste (nie widoczne) więc ich nie rysuje na [b]Graphics'ie[/b], i teraz w miejscach gdzie nie narysowałem żadnego punktu widać szare tło zamiast znajdującego się poniżej [b]PictureBox'a[/b] z [b]Graphics'em[/b] terenu. Uprzednio dla Graphics'a bohatera ustawiłem kanał ALPHA na 100. Co mam zrobić żeby temu zaradzić? Poczytałem i widzę że nie da się ustawić przeźroczystości dla [b]PictureBox'a[/b] więc rysuje na [b]Form'ie[/b] ale teraz mam taką śmieszną sprawę że widzę jak mi po kolei rysuje każdy piksel i to troszkę trwa :-s jest coś żeby od razu mi wyrzuciło całą grafikę, a nie po każdym pikselu odświeżało?
TKu_89
Dodano
31.07.2011 16:25:31
Udało mi się napisać kod który składa mi teren z załadowanej [b]Bitmap'y[/b] na podstawie pliku [i]*.txt[/i] w którym są w postaci tablicy wymienione numery klatek z [b]BItmap'y[/b]. Mam kolejną zagwozdkę bo jak wrzuciłem ten kod do funkcji to nie działa, a w dodatku zwolniło się samo wykonywanie tego kawałka kodu i [b]LIPTON[/b], kiedy nie było tego kodu w oddzielnej funkcji śmigało jak marzenie i co najważniejsze działało. Posiedzę podłubie i będzie działać nie ma innego wyjścia. :mryellow: [color=red][b]Problem został rozwiązany!!![/b][/color]
TKu_89
Dodano
30.07.2011 15:52:33
Aha... aha... problem był w tym, że podałem złą ścieżkę do pliku :mryellow: Jak ja nienawidzę takiego rodzaju pomyłek :mryellow: potem masz cały dzień do tyły przez literówka w ścieżce do pliku.
TKu_89
Dodano
29.07.2011 14:44:07
A nie zabrakło Ci małpki przed stringiem ew. podwójnego slasha? Teraz wygląda, jakbyś zdefiniował tabulator w stringu. BTW, ciężko mi zrozumieć, po co w ogóle potrzebna jest Ci osobna funkcja na nową bitmapę.
Ad@$
Dodano
29.07.2011 13:42:17
O a jednak chyba rozwiązałem problem ze składaniem terenu. Teren będzie rysowany w jednym [b]Graphics'ie[/b], na podstawie tablicy z pliku w którym jest numerycznie opisane jaki wycinek [b]Bitmap'y[/b] będzie rysowany. Pojawił się kolejny problem a mianowicie wrzuciłem zrobiłem funkcję która zwraca [b]Bitmap'ę[/b], a problem jest taki że się wysypuje. Oto ona: [code] public Bitmap LadujPlikTekstury(String Ssciezka) { Bitmap BitmapTekstura = new Bitmap(Ssciezka); return BitmapTekstura; } [/code] A oto wywołanie tej oto funkcji w innej funkcji: [code]Bitmap BitmapTekstura = LadujPlikTekstury("Media/test.bmp");[/code] Sekundkę wcześniej działało ale jak dodałem nową funkcję to się coś zaczęło sypać. Wywala mi taki oto błąd: [center][b][i]An unhandled exception of type 'System.ArgumentException' occurred in System.Drawing.dll Additional information: Parametr jest nieprawidłowy.[/i][/b][/center] Podświetla mi tą linijkę: [code]Bitmap BitmapTekstura = new Bitmap(Ssciezka);[/code] Pomęczę się jeszcze trochę może w uda mi się to rozgryźć ale jak ktoś może pomóc to byłbym wdzięczny.
TKu_89
Dodano
28.07.2011 20:28:44
Zrobiłem tak jak piszesz tylko na razie bez ?!?![b]using[/b]?!?!(a nie chodziło ci tutaj o [b]unsafe[/b]). Wycina piksele z [b]Bitmap'y[/b] wrzucam je do tablicy a potem do [b]Graphics'a[/b]. Jak na razie działa ale miałem mały problem z kolorami, ale rozwiązany okazało się że kolory były wpisywane do tablicy na opak :mryellow: Zamiast [color=red]R[/color][color=green]G[/color][color=blue]B[/color] to było [color=blue]B[/color][color=green]G[/color][color=red]R[/color]. [b]Ad@$[/b] dzięki! A więc kolejne pytanie :mryellow: czy jest możliwość wrzucenia do jednego [b]PictureBox'a [/b] kilku [b]Graphics'ów[/b], czy muszę zrobić dla każdej osobny, albo jakoś do jednego [b]Graphics'a[/b] kilka [b]Graphics'ów[/b] załadować, no chyba że musiałbym znowu to rozbijać na pojedyncze składowe i składać w całość to już sobie zrobię to na tych [b]PictureBox'ach[/b].
TKu_89
Dodano
27.07.2011 18:13:48
W Javie jest cropImage bodajże, a w C# nie ma chyba nic podobnego. Ja to zawsze ręcznie robiłem. Tworzyłem obiekt klasy Graphics i w parametrze podawałem bitmapę, tylko problem pojawiał się przy większej ilości danych. Wtedy pamięć się nie zwalniała, więc pamiętaj o "using ...", jak zdecydujesz się na ten sposób.
Ad@$
Dodano
27.07.2011 09:26:08
TKu_89
Dodano:
27.07.2011 00:27:12
Komentarzy:
7
Strona 1 / 1