Также нетрудно уменьшить пиксельную карту в некоторое целое число раз (тогда масштабный множитель s = 1/п, где п - целое). Например, при s - 1/3 мы могли бы построить уменьшенную пиксельную карту, просто оставив каждую третью строку и каждый третий столбец оригинала. Такой метод «выборки» из исходной пиксельной карты обычно приводит к потере информации, поэтому уменьшенное изображение может оказаться намного хуже оригинала. Обычно лучший результат дает вычисление (если оно возможно) среднего значения цвета девяти пикселов и помещение его в остающийся «пред10.2.3. Масштабирование и поворот изображений Никогда не надевайте наушники, лежа в постели, полной гремучих змей.

Еще один компьютерный Закон Мерфи

Средства для растровой графики

ставляющий» (representative) пиксел. Эту и другие технологии сглаживания мы будем рассматривать в разделе «Ступенчатость; технологии сглаживания».

Удвоение пикселов для увеличения символов

Рис. 10.7. Удвоение пикселов для увеличения символов

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

glPixe1Zoom(float sx. float sy);

задает по x и по у масштабные множители, с которыми впоследствии будут рисоваться пиксельные карты. Сами пиксельные карты не масштабируются, масштабируются лишь изображения, задаваемые этими пиксельными картами. Для параметров sx и sy допускаются любые, даже отрицательные вещественные числа. По умолчанию их значения равны 1.0.

Масштабирование выполняется относительно текущей растровой позиции pt. Рассмотрим пиксел, находящийся в строке г и столбце с пиксельной карты. Грубо говоря, он будет нарисован в виде прямоугольника шириной sx и высотой sy экранных пикселов, а нижний левый угол будет находиться в экранном пикселе (ptx + sx*r,pt.y + sy*c). Точнее, любые экранные пикселы, центры которых лежат внутри этого прямоугольника, рисуются тем же цветом, что и пиксел пиксельной карты. Если, например, sx = 2 и sy = 3, то пиксельная карта рисуется с правильным повторением пикселов и будет вдвое шире и втрое выше, чем немасштабированная пиксельная карта. Если же значения sx и/или sy являются дробными, то изображение будет соответственно уменьшено и может потерять в качестве, поскольку цвет каждого экранного пиксела является просто цветом того «прямоугольника», центром которого является данный пиксел.


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