Forum Dyskusyjne
Zaloguj Rejestracja Szukaj Forum dyskusyjne

Forum dyskusyjne -> Software -> Programowanie :: WWW -> Zadanie z C++: tworzenie pliku graficznego
Napisz nowy temat  Odpowiedz do tematu
Zadanie z C++: tworzenie pliku graficznego
PostWysłano: Sobota, 12 Czerwca 2004, 20:08 Odpowiedz bez cytowania Odpowiedz z cytatem
TREW
Bywalec
<tt>Bywalec</tt>
 
Użytkownik #1083
Posty: 28


[ Osobista Galeria ]




Witam serdecznie.

Mam wielką prośbę do osób, które posiadaja wiedze tajemną w tej materji, jako ze niejest to moja działka i jak narazie jestem zielony crazy.gif choć chce to zmienić, a kolega J@ger powiedził mi że powinny sie tu znaleźć życzliwe osoby, dlatego też ta prośba. Wracając do tematu mam taki mały projekt :

Muszę napisać zbiór funkcji który będzie umozliwiał tworzenie pliku graficznego BMP i umozliwi rysowanie w nim prostych obiektów.Plik powinien być plikiem typu BMP nieskompresowanym, o 24 bitach na piksel(RGB).Funkcje powinny umozliwiać: tworzenie nagłówków obrazka o zadanych rozmiarach, rysowanie punktów

Nieoczekuję gotowego rozwiązania, może ktos będzie w stanie powiedzieć mi jak to ugryżć, wytłumaczyć jak się do tego zabrać.
Jeszcze raz prosze o pomoc.
Narazie.


Ostatnio zmieniony przez TREW dnia Niedziela, 13 Czerwca 2004, 17:51, w całości zmieniany 1 raz
  
Re: <TREW> Zadanie z C++: tworzenie pliku graficznego
PostWysłano: Niedziela, 13 Czerwca 2004, 10:39 Odpowiedz bez cytowania Odpowiedz z cytatem
J@ger
n00b vip
 
Użytkownik #15
Posty: 3818


[ Osobista Galeria ]




no chłopy pls
pomóżta facetowi lol.gif

ostatnie zaliczenie = wakacje i moze sie zając tym co umie robic najlepiej :) czyli dbaniem o przyszła zonę i zarabianiem pieniędzy

ja jestem straszny leszcz z C i nie poradze, ale wy na pewno wiecie o co chodzi
  
Re: <TREW> Zadanie z C++: tworzenie pliku graficznego
PostWysłano: Niedziela, 13 Czerwca 2004, 19:47 Odpowiedz bez cytowania Odpowiedz z cytatem
Tirinti
Pro uczestnik
<tt>Pro uczestnik</tt>
 
Użytkownik #28
Posty: 1295


[ Osobista Galeria ]




Tak to sięrobi w Visual C++ 6
A więc tak.
Robisz sobie strukturę
Kod:

MyRGB
{
  BYTE blue;
  BYTE green;
  BYTE red;
}

Robisz sobie tablicę o odpowiednich wymiarach
Kod:

MyRGB *buf;
buf=new MyRGB[w*h];
gdzie w to szerokość a h to wysokość.

bierzesz sobie jakiśkolor dajmy na to
Kod:

MyRGB kolor;
kolor.blue=10;
kolor.green=50;
kolor.red=100;
i piksele w obrazku zaznaczasz
buf[h*w+y]=kolor;

Oprócz bufora RGB trzeba zrobićdwa nagłówki. BITMAPFILEHEADER i BITMAPINFOHEADER.
Kod:

BITMAPFILEHEADER bfTag;
BITMAPINFOHEADER biTag;

bfTag.bfType=0x4d42;//czyli dwie literki BM co oznacza, że plik jest w formacie BMP
bfTag.bfSize=54+w*h*3;//rozmiar pliku 54 to rozmiar nagłówka w*h*3 to rozmiar matrycy kolorów
bfTag.bfOffBits=54;//odległość od początku pliku do matrycy kolorów. Można dać więcej i w środku wstawić jakieśrozszeżone formaty, które będą czytały tylko wybrane aplikacje, są rożne inne, ale w przypadku najprostszego 24bitowego bmp wystarczy na stałe 54 (jak ma mniej bitów to jest jeszcze tablica LUT)

biTag.biSize=40;//rozmiar nagłówka, sąwersje rozszeżone dal bardziej skomplikowanych formatów, tu używam najprostszego
biTag.biHeight=h;//wysokość, można daćujemną co będzie oznaczać, że bitmapa jest dogóry nogami, nieraz sięto przydaje
biTag.biWidth=w;//szerokość
biTag.biPlanes=1;//inne niż 1 w bardziej urozmaiconych formatach
biTag.biBitCount=24;//ilość bitów na pixel
biTag.biCompression=0;//0 - brak kompresji
biTag.biSizeImage=w*h*3;//rozmiar obrazka w bajtach
biTag.biXPelsPerMeter=300;//dpi w poziomie może byćdowolne, niektóre obrazki na podstawie tego skalują obrazek przy wydruku itp
biTag.biYPelsPerMeter=300;//dpi w pionie
biTag.biClrUsed=0;//przy 24bitach niepotrzebne
biTag.biClrImportant=0;//jak wyżej

Otwiersz plik do zapisu, zapisujesz BITMAPFILEHEADER, później BITMAPINFOHEADER, a na końcu kolejne komórki tablicy.

Jeśli to ma być w czymś innym niż Visual to strukturki deklarowane są

Kod:

typedef struct tagBITMAPFILEHEADER {
  WORD    bfType;
  DWORD   bfSize;
  WORD    bfReserved1;
  WORD    bfReserved2;
  DWORD   bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;

typedef struct tagBITMAPINFOHEADER{
  DWORD  biSize;
  LONG   biWidth;
  LONG   biHeight;
  WORD   biPlanes;
  WORD   biBitCount;
  DWORD  biCompression;
  DWORD  biSizeImage;
  LONG   biXPelsPerMeter;
  LONG   biYPelsPerMeter;
  DWORD  biClrUsed;
  DWORD  biClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;

WORD to 16bitowy unsignedint
DWORD to 32bitowy unsignedint
LONG to 32bitowy int
BYTE to unsigned char
  
Re: Zadanie z C++: tworzenie pliku graficznego
PostWysłano: Poniedziałek, 14 Czerwca 2004, 19:30 Odpowiedz bez cytowania Odpowiedz z cytatem
TREW
Bywalec
<tt>Bywalec</tt>
 
Użytkownik #1083
Posty: 28


[ Osobista Galeria ]




Bardzo Ci dziękuje, w końcu wiem mniej więcej jak się do tego zabrać ;)
  
Zadanie z C++: tworzenie pliku graficznego
Forum dyskusyjne -> Software -> Programowanie :: WWW

Strona 1 z 1  
  
  
 Napisz nowy temat  Odpowiedz do tematu  
zaręczyny w wellness Ciechocinek
Kopiowanie i rozpowszechnianie materiałów w całości lub części jest niedozwolone. Wszelkie informacje zawarte w tym miejscu są chronione prawem autorskim.



Forum dyskusyjne Heh.pl © 2002-2010