О нарисовать с помощью drawO новое окно, заслонив им данную область исходного изображения. Позднее, если заслоняющее окно убирается, то оно вначале сохраняется для возможного дальнейшего использования, а исходный прямоугольник восстанавливается при помощи draw().

10.2. Управление пиксельными картами

Открытие и перемещение нового окна

Рис. 10.6. Открытие и перемещение нового окна Эта схема работает хорошо в тех случаях, когда изображение, заслоненное окном, «заморожено» в течение времени заслона. Но все становится значительно сложнее в том случае, когда информация в скрытом окне изменяется. Задача заключается в том, что делать с теми частями изображений, которые изменились в скрытом состоянии. Когда заслоненное окно впоследствии открывается, его изображение должно быть обновлено. В литературе обсуждается несколько схем решения этой задачи [Pike, 168]. Чаще всего ответственность за отслеживание того, что происходит в таких окнах, возлагается на приложение; в его задачу входит и восстановление изображения после того, как это окно становится полностью видимым.

Часто бывает нужно масштабировать или поворачивать изображения. Пусть, например, спутниковая фотография Земли изображает Европу в пиксельной карте 1200 на 1600 пикселов, а мы хотим сравнить эту фотографию со сделанным ранее изображением размером 1540 на 1880 пикселов. Прежде чем эти пиксельные карты можно будет сравнить, меньшая из них должна быть увеличена так, чтобы соответствующие части изображений были «выровнены». Аналогичная задача возникает, когда мы составляем картотеку оцифрованных отпечатков пальцев и обнаруживаем, что некоторые из изображений отпечатков слегка повернуты относительно других. Для сравнения различных отпечатков их изображения необходимо повернуть для выравнивания в едином направлении. Рассмотрим вкратце некоторые простейшие типы масштабирования и поворота.

Идея состоит в том, что при масштабировании пиксельной карты с некоторым множителем s создается пиксельная карта, которая содержит в s раз больше пикселов как по х, так и по у. Если придерживаться фотографической терминологии, то при s > 1 пиксельная карта увеличивается (enlarged); в остальных случаях она уменьшается (reduced). Сами пикселы, конечно, не изменяют размеров. Когда s - целое число, изображение легко может быть масштабировано при помощи повторения пикселов (pixel replication). На рис. 10.7 показан пример повторения пикселов битовой карты символа. Каждый пиксел меньшего символа порождает массив пикселов размерностью два на два. Для других целых значений s каждый пиксел порождает массив размерностью s на s пикселов.


⇐ Предыдущая| |Следующая ⇒