Witam.
Muszę napisać program wyświetlający napis na cały ekran w trybie graficznym korzystając jedynie z modułu DOS. Czy istnieje możliwość zmiany rozmiaru czcionki korzystając z jakiegoś przerwania? Pracuję w trybie 320x200 256 kolorów (13h w funkcji 00h przerwania 10h).
Wyświetlaj tekst graficznie. Przechowuj bitmapę poszczególnych literek (możesz wygenerować je sobie w Paincie), składaj w napis i wyśwetlaj...
... albo rysuj tekst wektorowo: lina, kółko, prostokąt
Dzięki. Pomysł z bitmapami jest bardzo fajny. Znalazłem taki poradnik do wyświetlania obrazów:
Wyświetlanie BMP
Jest tylko jeden problem, ta procedura radzi sobie z wyświetlaniem obrazów w rozdzielczości 320x200, po zmianie rozdzielczości obrazki zostają bardzo zniekształcone. Ich rozmiar po wyświetleniu odpowiada właściwej rozdzielczości bitmapy, jednak całość jest pochylona w prawo. Jak to poprawić?
for y:=Naglowek.biHeight-1 downto 0 do {a teraz wczytujemy kolory}
for x:=0 to Naglowek.biWidth do
begin
read (bitmapa,kolor);
mem[$A000:y shl 8+ y shl 6 + x+ay shl 8 +ay shl 6+ax]:=kolor;
end;
Zamiast haxxorskiego y shl 8+ y shl 6 + x+ay shl 8 +ay shl 6+ax
trzeba uczciwie wyliczać ofset piksela jako x+y*szerokość.
Niestety, obraz cały czas jest zniekształcony. Tak jakby odczyt koloru piksela z pliku był w dziwnej kolejności. Dla rozjaśnienia sytuacji załączam screen pokazujący efekt wyświetlenia obrazu mniejszego niż natywna rozdzielczość trybu graficznego.
[url=http://postimage.org/image/o9q3ak4ff/][img]http://s9.postimage.org/o9q3ak4ff/dos.jpg[/img][/url]
Udało mi się znaleźć rozwiązanie tego problemu. Otóż każda linia pozioma obrazu zapisanego w bmp posiada dopełnienie bajtów do liczby podzielnej przez 4. Wystarczy obraz o odpowiedniej szerokości i wszystko działa. Wielkie dzięki za podsunięcie pomysłu i późniejszą pomoc.