Кто ни будь скажет, есть ли API функция подобная функции 0СН прерывания 10Н для рисования точки на экране, или это уже не входит в компетенцию API? Если так, тогда как вообще организовать анимацию в Win 32?
на масме : Code (Text): invoke GetDC, hWnd mov hdc,eax invoke SetPixel,hdc,xpos,ypos,000FF00h ; green ; получить значение пиксела invoke GetPixel,hdc,xpos,ypos Ходят упорные слухи, что эти функции медленные и для проведения масштабных работ на экране нужно юзать другие методы. Для бытовых целей - вполне сгодятся. Сделал себе конвертор - меняет цвета пикселов определенного цвета (нужно было в нескольких десятках картинок уменьшить якость цветов и так, чтобы при преобразовании в гиф не возникало искажений). Найти готовую программу не смог... а написал - за 30 минут..., разумеется методом "копи-пасте". На сайте много интересных исходников, из которых можно сделать почти всё, до чего можно додуматься без употребления грибочков и вытяжки из кактусов. А... там же ещё про анимацию. Есть такие функции.
Ага, лучше создать DC, потом заюзать CreateDIBSection и скопировать через BitBlt туда обрабатываемую картинку, а в конце обратно куда надо (это вроде называется Double Buffering или хз как ) Ну а получать доступ к пикселам как к массиву в памяти.
neyro Поточечная графика SetPixel, GetPixel есть API для работы с линиями, регионами, но тебе скорее подойдет вот это
Чтобы новую тему не создавать, хотел спросить, что если выводить графику прямой записью в память по адресу 0a0000h, будет быстро и хорошо, не считая необходимости смотреть за ходом луча. Или метод того не стоит? Заранее извиняюсь, под венду программирую не много...
Прямой записью не получится, по крайней мере в режимах с номерами от 0Dh, и по 13h. Такой метод сработает только в текстовом режиме или в режимах True Color, но последние работают только с линейной 32 разрядной адресацией памяти, то есть, под Виндой или нужен специальный метод переключения в линейный режим из ДОСа. Такой метод описан у Кулакова.
Под вендой уже линейный режим, я имел в виду вынь32 приложение. Хотя видеобуфер может находиться не обязтельно по a0000h, на моей карточке\винде запись туда WinHex'ом отобразилась на экране.