344_____________________________________________Глава 5

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

Если вы выполните команду Правка Отменить, то изображение вернется к
тому виду, какой был при начале работы с последним использованным инструмен- ;

том.

Теперь вы можете загрузить командой Файл Открыть вашего приложения ка-
кое-то изображение (на рис. 5.11 б загружен файл ...\lmages\Splash\16Co-
lor\eai"th.bmb). Вы можете попробовать перекрашивать те или иные области изоб-
ражения. Например, можете изменить цвет фона, выделить какую-то сплошную
область рисунка одного цвета (на рис. 5.116 выделена одна из областей облачного
покрова) и т.п.

Итак, вы реализовали два из основных инструментов любого графического ре-
дактора рисунков: кисть и индикатор цвета. Реализация остальных типичных ин-
струментов требует предварительного ознакомления с режимами рисования, что
будет сделано в следующем разделе 5.1.5. После этого вы сможете, вероятно, при
желании вернуться к вашему графическому редактору и попробовать реализовать,
например, инструменты, рисующие различные фигуры и перемещающие фрагмен-
ты изображения.

5.1.5 Режимы рисования

5.1.5.1 Режимы пера

У пера Pen имеется еще одно свойство, которое мы пока не рассматривали. Это
свойство — Mode (режим). Возможные значения Mode приведены в справочной ча-
сти книги в главе 15. По умолчанию значение Mode = pmCopy. Это означает, что
линии проводятся цветом, заданным в свойстве Color. Но возможны и другие ре-
жимы, в которых учитывается не только цвет Color, но и цвет соответствующих
пикселей фона. Наиболее интересным из этих режимов является режим pmNot-
Xor — сложение с фоном по инверсному исключающему ИЛИ. Операция инверс-
ного исключающего ИЛИ анализирует по битам два своих операнда. Результирую-
щий бит равен «О», если соответствующие биты двух операндов не равны друг дру-
гу, а при равенстве битов операндов результирующий бит равен о 1».

Вспомните, что каждый пиксель хранит цвет как набор битов. Пусть, напри-
мер, фоновый пиксель имеет значение 0110011, а цвет пера установлен в 1111000.
Применение операции pmNotXor к этим двум числам даст цвет со значением
0110100. Этот цвет перо задаст данному пикселю. А теперь посмотрим, что полу-
чится, если перо повторно пройдет по тому же пикселю. В этом случае опять будет
выполнена операция pmNotXor по отношению к цвету пера 1111000 и текущему
цвету пикселя, который стал равен 0110100. Применение pmNotXor к этим чис-
лам даст в результате 0110011, т.е. первоначальный цвет пикселя.

Это значит, что если нарисовать на фоне какую-то фигуру один раз, а затем на-
рисовать ту же фигуру повторно, то нарисованная фигура исчезнет и каждый пик-
сель вернется к своему первоначальному цвету. Эту особенность режима pmNot-
Xor, свойственную также режиму pmXor — сложение с фоном по исключающему
ИЛИ, можно использовать для создания простенькой анимации. Достаточно нари-
совать нечто, затем стереть нарисованное, перерисовать немного измененным — и
рисунок будет представляться ожившим. В последующих разделах мы часто будем
использовать такой режим рисования.