Ładny brzuch

Mam taki program

{-=| e-mail: krzysiek@gr0g.prv.pl              |=-} {-=| http://www.gr0g.prv.pl                    |=-} program Bmp13h; uses Crt; type THandleBMP =record {Definicja naglowka pliku BMP}  bfType:Word; {Sygnatura pliku BMP: 4D42h ("BM")}  bfSize:Longint; {Dlugosc calego pliku}  bfRes1:Word; {Pisac 0}  bfRes2:Word; {Pisac 0}  bfOffBits:Longint; {Pozycja rysunku w pliku ( Dlugsc naglowka + Dlugsc palety)}  biSize:Longint; {Dlugosc stad do konca naglowka: 40, czasem mniej}  biWidth:Longint; {Szerokosc obrazka}  biHeight:Longint; {Wysokosc obrazka}  biPlanes:Word; {Musi byc 1}  biBitCount:Word; {Liczba bitow na piksel (1, 4, 8, 24)}  biCompression:Longint; {Algorytm kompresji: 0 = zaden, 1,2 = RLE}  biSizeImage:Longint; {Wielkosc rysunku}  biXPelsPerMeter:Longint; {Rozdzielczosc pozioma}  biYPelsPerMeter:Longint; {Rozdzielczosc pionowa}  biClrUsed:Longint; {Liczba kolorow w palecie}  biClrImportant:Longint; {Pisac 0} end; TEkran=Array[0..320*200-1] of Byte; {Typ dla ekranu} var Ekran:^TEkran; {Zmienna, ktora bedzie sie miescic w pamieci ekranu} PlikBmp:file; {zmienna plikowa} NaglowekBmp:THandleBMP; {Naglowek pliku BMP} Pal:array[0..4*256-1] of byte; {tablica zawierajaca palete kolorow} NazwaPliku:String; {Zmienna zawierajaca nazwe pliku BMP} b:byte; {Zmienna pomocnicza} procedure SetVga;assembler; {wlaczenie trybu 13h, 320*200*256c} asm mov ax, 13h int 10h end; procedure SetTxt;assembler; {wlaczenie trybu textowego} asm mov ax, 3 int 10h end; begin {Ustalenie nazwy pliku BMP} NazwaPliku:='Test.bmp'; {zaznaczenie pliku...} Assign(PlikBmp,NazwaPliku); {..i otworzenie go do odczytu} Reset(PlikBmp,1); {Odczyt naglowka} BlockRead(PlikBmp,NaglowekBMP,SizeOf(NaglowekBMP)); {Wypisywanie danych z odczytanego naglowka} With NaglowekBMP do begin Writeln('Naglowek BMP pliku "',NazwaPliku,'" :'); Writeln;  Writeln('Sygnatura pliku BMP: 4D42h ("BM") : ',bfType);  Writeln('Dlugosc calego pliku : ',bfSize);  Writeln('Powinno byc 0 : ',bfRes1);  Writeln('Powinno byc 0 : ',bfRes2);  Writeln('Pozycja rysunku w pliku ( Dlugsc naglowka + Dlugsc palety) : ',bfOffBits);  Writeln('Dlugosc stad do konca naglowka 40, czasem mniej : ',biSize);  Writeln('Szerokosc obrazka : ',biWidth);  Writeln('Wysokosc obrazka : ',biHeight);  Writeln('Musi byc 1 : ',biPlanes);  Writeln('Liczba bitow na piksel (1, 4, 8, 24) : ',biBitCount);  Writeln('Algorytm kompresji 0 = zaden, 1,2 = RLE : ',biCompression);  Writeln('Wielkosc rysunku : ',biSizeImage);  Writeln('Rozdzielczosc pozioma : ',biXPelsPerMeter);  Writeln('Rozdzielczosc pionowa : ',biYPelsPerMeter);  Writeln('Liczba kolorow w palecie : ',biClrUsed);  Writeln('Powinno byc 0 : ',biClrImportant); Writeln; Writeln('Nacisnij jakis klawisz, aby zobaczyc obrazek...'); Readkey; end; {Wlaczenie trybu graficznego 13h} SetVga; {Odczyt palety} BlockRead(PlikBmp,Pal,SizeOf(Pal)); {Ustawienie palety kolorow, dla obrazka} for b:=0 to 255 do {dla kazdego koloru} begin  port[$3c8]:=b; {Numer koloru}  port[$3c9]:=Pal[b*4+2] div 4; {Niebieski}  port[$3c9]:=Pal[b*4+1] div 4; {Zielony}  port[$3c9]:=Pal[b*4] div 4; {Czerwony} end; {Zarezerwowanie pamieci dla zmiennej Ekran} New(Ekran); {Ustawienie jej w miejscu pamieci karty graficznej tak, ze gdy zmienimy wartosc zmiennej Ekran, to zobaczymy to na ekranie monitora} Ekran:=Ptr(SegA000,0); {Odczyt obrazka bezposrednio na ekran (do gory nogami)} BlockRead(PlikBmp, Ekran^, NaglowekBMP.BiSizeImage); {Zamkniecie pliku} Close(PlikBmp); Readkey; {Wlaczenie trybu textowego} SetTxt; end.

Wyswietla on bitmape tyle ze do gory nogami. Co mam zmienic zeby wyswietlil normalnie? Jesli znacie prostsze sposoby wyswietlenia bmp to powiedzcie jakie.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •