Практические упражнения

10.3.3. Расширение класса RGBpixmap путем включения в него альфа-компонента Произведите изменения в классе RGBpixmap, который был определен в разделе «Типы данных, используемые для пиксельных карт», так чтобы пиксельные карты поддерживали альфа-канал. Добавьте методы blendO и setChromaKeyO, после чего протестируйте их на таких операциях: О чтение BMP-изображения в пиксельную карту (интереснее всего, если это изображение содержит однородный фон какого-либо цвета); О придание с помощью подпрограммы setChromaKeyO прозрачности определенному цвету; О смешивание данной пиксельной карты с какой-нибудь другой для проверки свойства прозрачности в действии.

10.3.4. Применение нового цвета с помощью мазков кисти Рассмотрим пиксельную карту кисти, у которой вблизи центра кисти альфа-фактор является малым, а в остальных местах равен нулю. При каждом использовании такой кисти она смешивает цвет кисти С с любым изображением D адресата, вследствие чего D = аС + (1 - a)D. При повторном использовании количество цвета кисти возрастает. Докажите, что после i-ro применения кисти цвет адресата равен Di = аС + (1 - a)DiV Определите долю цвета адресата, которая перешла от цвета источника С после восьми мазков.

10.3.3. Логические комбинации пиксельных карт

Существуют другие способы комбинирования пиксельных карт, при которых каждый пиксел рассматривается просто как совокупность бит, причем не обращается никакого внимания на то, какое численное значение представляют эти биты. Пиксельные карты по-прежнему комбинируются пиксел за пикселем, однако теперь биты в пикселе комбинируются логически (logically), бит за битом. Например, над битами могут производиться следующие операции: OR, AND, EXCLUSIVE OR.

Пусть, например, пиксел Л состоит из RGB-компонентов (21,127,0). Если записать эти компоненты в двоичной форме, то мы будем иметь Л = (00010101, 01111111, 00000000). Предположим далее, что пиксел В в двоичной форме имеет вид В = (01010101,11110000, 10000101). Если логически сложить (OR) эти две триады, то получим следующий результирующий пиксел С:


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