Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przerobienie pliku bitmapy na własny użytek

Ostatnio zmodyfikowano 2012-07-18 17:28
Autor Wiadomość
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:
C/C++
#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?
P-60318
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
P-60319
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.
P-60321
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
P-60326
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
P-60328
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.
P-60332
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)
C/C++
putpixel( obrazek, 0, 64, x );
putpixel( obrazek, 1, 64, y );
save_bitmap( "obrazek.bmp", obrazek, default_palette );
przy uruchomianiu wczytuje pozycje x i y.
C/C++
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.
P-60349
kubawal
» 2012-07-18 08:24:27
A do tego mojego pomysłu:
Różowe mogły by być tylko krawędzie obrazka.

P-60428
« 1 » 2
  Strona 1 z 2 Następna strona