Графические устройства

         

Перемещение рисунков



Перемещение рисунков

Простейшим примером перемещаемого рисунка является изображение курсора. Работа с ним подробно описана в главе 6.

В общем случае при первом построении перемещаемого рисунка надо сохранить исходный фон на занятом им месте. Для перемещения рисунок удаляется с экрана и воспроизводится на новом месте. Перед перемещением сохраняется исходный фон на новой позиции, а после перемещения на месте удаленного рисунка восстанавливается исходный фон. Если адреса точек старой и новой позиции рисунка относятся к одному сегменту видеопамяти (точки расположены в одном окне), то для перемещения достаточно простого копирования содержимого одних байтов видеопамяти в другие.

Однако в общем случае при таком способе перемещения перед чтением и записью кода каждой точки придется проверять принадлежность адреса нужному сегменту видеопамяти и при несоответствии изменять текущее окно. В результате перемещение будет происходить крайне медленно.

Если в распоряжении задачи имеется достаточный объем видеопамяти, то имеет смысл копировать исходный рисунок в оперативную память, а оттуда в нужное место видеопамяти. При такой схеме перемещения затраты на работу с окнами видеопамяти будут минимальными. Если доступное задаче пространство оперативной памяти ограничено, то через оперативную память можно перемещать отдельные строки рисунка. Это упростит работу с окнами видеопамяти в пределах каждой строки.



Содержание раздела