Przerobienie pliku bitmapy na własny użytek
Ostatnio zmodyfikowano 2012-07-18 17:28
mostrom Temat założony przez niniejszego użytkownika |
Przerobienie pliku bitmapy na własny użytek » 2012-07-17 13:00:45 Witam! Zastanawiałem się dużo nad najlepszym rozwiązaniem określania W KTÓRYM MIEJSCU BITMAPY znajduje sie obiekt(wybrana grafika) O JAKICH WYMIARACH. I stwierdziłem, że czemu nie stworzyć bitmapy takich obiektów jak np. drzewo, czy ławka do gry, i jeszcze nadpisać ten plik binarny tak, żeby mój program mógł odczytać współrzędne cięcia odpowiednich prostokątów? Struktury bitmapy wygląda oryginalnie tak: #pragma pack(push, 1) struct BITMAPFILEHEADER { short bfType; int bfSize; short bfReserved1; short bfReserved2; int bfOffBits; };
struct BITMAPINFOHEADER { int biSize; int biWidth; int biHeight; short biPlanes; short biBitCount; int biCompression; int biSizeImage; int biXPelsPerMeter; int biYPelsPerMeter; int biClrUsed; int biClrImportant; }; #pragma pack(pop) Czy jest możliwe i opłacalne tak je przerobić, żeby wstawić tam dodatkowe dane nt. współrzędnych obiektów? |
|
kubawal |
» 2012-07-17 13:04:55 W jakimś pliku muszą być zapisane lokalizacje, wymiary i pozycje bitmap Ładujesz ten jeden plik a później po kolei bitmapy |
|
RazzorFlame |
» 2012-07-17 13:14:40 mostrom, mowisz cos o tym aby w bitmapie zakodować jeszcze wymiary cięcia. Zrob sobie nowy format i dostosuj go do własnych potrzeb. TZN ustal co jest na początku a co w innych miejscach. |
|
mostrom Temat założony przez niniejszego użytkownika |
» 2012-07-17 13:32:28 Właśnie o takim rozwiązaniu myślałem ze względu na jakiś rodzaj "zakodowania" obrazu - nie każdy może go sobie otworzyć i edytować grafiki. Co prawda stworzenie bitmapy, i osobnego pliku zawierającego wymiary cięcia jest prostsze, ale w najbliższym czasie pomyśle coś o własnym formacie Pozdrawiam |
|
kubawal |
» 2012-07-17 13:36:47 mógłbyś też zrobić coś takiego jak funkcja masked_blit() w allegro. Wszystko co jest np. różowe zostaje odcięte. Jeśli kształt jest nieregularny, to funkcja może pobierać argument w postaci koloru tła i nim zastąpić różowe fragmenty |
|
mostrom Temat założony przez niniejszego użytkownika |
» 2012-07-17 13:49:52 Tzn wycinanie prostokątów odmierzając gdzie obiekt jest najszerszy i najdłuższy per pixel, dopóki nie napotka różowego koloru? To by było trudne, jeśli obiekty umieszczone byłyby na jednej bitmapie. Pozatym, nie wyobrażam sobie w każdej chwili wyświetlenia poszczególnego obiektu na ekranie, kiedy struktura obiektu dysponuje tylko id tego obiektu. |
|
Gabes |
» 2012-07-17 14:45:56 Żeby nie było wiem o co ci chodzi. Mój taki łatwiejszy sposób, zrobiłem zapis do bitmapy w allegro4 bez zmiany formatu, zapisuję podczas zamknięcia programu pozycje obrazka na ekranie (x i y) na dole bitmapy. (obrazek 64x65) putpixel( obrazek, 0, 64, x ); putpixel( obrazek, 1, 64, y ); save_bitmap( "obrazek.bmp", obrazek, default_palette ); przy uruchomianiu wczytuje pozycje x i y. int x = getpixel( obrazek, 0, 64 ); int y = getpixel( obrazek, 1, 64 ); można dodać siłe,życie, itd. masked_blit( obrazek, bufor, 0, 0, 0, 0, 64, 64 ); Na ekranie umieszcza się tylko tę część bez zapisu. Jest to taki auto zapis. |
|
kubawal |
» 2012-07-18 08:24:27 A do tego mojego pomysłu: Różowe mogły by być tylko krawędzie obrazka.
|
|
« 1 » 2 |