Форум — Ответы ( К темам )
? | Cseno: Вопрос по графике.Програмно изменить яркость,паллитру...битмапа... (16-01-2003 03:39:33) |
Доброго времени суток.Вопрос наверное немного не в формате данного форума. Недавно мой друг сделал скринсэйвер во флэш,суть его работы в следующем: на экране появляется картинка,начинает темнеть до полной черноты,появляется следующая картинка начинает темнеть и.т.д. Эффект изменения яркости он сделал...просто засунув в ресурсы по 5 "разноярких" вариантов каждой картинки и потом просто выводил их одну за другой .Размер скринсэйвера > 5mb. Вопрос такой : можно ли програмно(не во флэше) менять такие параметры битмапа(или других форматов) как яркость,паллитру,контрастность... и если да то как это можно сделать ? (Или сделать видимость -- например рисовать на рисунке черной полупрозрачной кистью?-яркость...?) Зарание спасибо. | |
Devnvd (17-01-2003 19:39:09) | |
Для изменения параметров яркости, контрастности ... переведите цвет пиксела из RGB в HLS, измените коэффициенты, а затем переведите обратно в RGB. Смешивание цветов двух пикселов. char rgb1[3],rgb2[3],rgb[3]; WORD hls1[3],hls2[3],hls[3]; COLORREF Rgb; //Получаем RGB пиксела картинки 1 и переводим в HLS rgb1[0]=*ptr1++; rgb1[1]=*ptr1++; rgb1[2]=*ptr1++; Rgb=RGB(rgb1[0],rgb1[1],rgb1[2]); ColorRGBToHLS(Rgb,&hls1[0],&hls1[1],&hls1[2]); //Получаем RGB пиксела картинки 2 и переводим в HLS rgb2[0]=*ptr2++; rgb2[1]=*ptr2++; rgb2[2]=*ptr2++; Rgb=RGB(rgb2[0],rgb2[1],rgb2[2]); ColorRGBToHLS(Rgb,&hls2[0],&hls2[1],&hls2[2]); //Смешиваем два изображения в нужных пропорциях hls[0]=hls1[0]+(hls2[0]-hls1[0])*Iter/100; hls[1]=hls1[1]+(hls2[1]-hls1[1])*Iter/100; hls[2]=hls1[2]+(hls2[2]-hls1[2])*Iter/100; Rgb=ColorHLSToRGB(hls[0],hls[1],hls[2]); |