Cześć. Dostałem temat projektu "prosty paint w przerwaniach" napisać należy go w Pascalu :)
Program ma rysować proste figury geometryczne takie jak kwadrat, prostokąt, okrąg, elipsa, koło i elipsa z wypełnieniem. Oczywiście kolory dowolne wybrane z menu ale to mało ważne.
Zasadniczo program rysuje mi wszystkie z w.w figur ale mam problem ze 'skalowaniem' w czasie rzeczywistym. Mój "algorytm" skalowania wygląda następująco:
Dopóki jest wciśnięty LPM:
- Rysuje figure od miejsca kliknięcie myszki do aktualnego położenia myszki z kolorem nr 0 (czarnym!). TŁO jest czarne więc w tym kroku jakby zamazuje figure.
- Pobieram znowu pozycje myszki
- Rysuje figure tak jak w punkcie 1 tylko już kolorem różnym od czarnego.
Jak widać nie jest to zbyt dobry algorytm, widać przy nim niezłe migotanie ale nie o tym mowa. Problemem jest to, że jeśli figury nachodzą na siebie, to jedna zamazuje drugą podczas jej czyszczenia. Czy ktoś ma pomysł jak obejść to ?
Próbowałem z trybem 13h ale ma rozdzielczość tylko 320x200 bodajże co na painta trochę za mało, więc przeskoczyłem na tryb 10h, który ma rozdzielczość 640x350. Aby zapamiętać każdy pixel tego ekranu musiałbym przechowywać to w tablicy 224000 bitowej na co pascal mi nie pozwala (wysypuje error ze zbyt duża tablica, jeśli robię 2d jest to samo). Poza tym rysowanie przerwaniami całego ekranu co chwila wiąże się z ogromnym spowolnieniem ekranu, więc to odpada :/
Edit-> dodaje, że nie wolno używać NIC poza przerwaniami DOSa i BIOSa tj żadnej grafiki z bibliotek, obsługa myszy oraz grafika przerwaniami, ewentualny tekst również :)