Welikeit.Ru | |
|
| |
|
|
Дельфи - Уроки - Стерео изображения в DelphiПомните,раньше была такая штука,стереоскоп назывался. Ну так вот, данная штука могла делать из просто картинки стерео картинку(аля ОБЪЕМНУЮ КАРТИНКУ):)И я вдруг заинтересовался: "Каким же способом сделать такую штуку на наших боевых конях?". Прошел месяц. На руках программа и данный расказ:)Ну слушайте и внимайте слову божию:) "Зрительные пигменты глаза состоят из колбочек трёх типов,чувствительных к синему,зелёному и красному цвету."(с)Учебник биологии. Ну вот, на основе данного утверждения господа ученые разработали систему цветности для наших ПК.И получила название данная система RGB.В этой системе все цвета получаються путем смешивания синего,зеленого и красного цвета. Смесь синего и зеленого, например, даёт голубой цвет.Таким образом, все цвета можно засунуть в прямоугольную систему координат x,y,z.Где у всех координат максимальная цифра - 255. Оси,такие как WIN или Linux, позваляют устанавливать разные цветовые режимы: 1.16-цветный режим. 2.256 цветный. 3.режим High Color,при котором для хранения цвета каждой точки выделяеться 2 байта,что соответсвенно даёт 65000 цветов. 4.Режим True Color,предпологает выделение четыре байта под каждый цвет,что позволяет изменять доли составляющих красного,синего и зеленого в диапазоне от 0 до 255(RGB). У данной системы есть всего два недостатка(ну у кого их нет:)).Намбер ван - зависимость от аппаратуры,намбер ту - невозможность получить ВСЕ цвета путем смешения синего,зеленого и красного.Теперь по поводу стерео.Стерео картинку можно имитировать (к сожелению именно имитировать) тремя способами: 1.Использовать стерео очки и специальную видео карту:)(NVIDIA вам поможет). 2.Купить специальный монитор(супер-пупер разработка буржуев,только у нас вы можете приобрести ЭТО всего за $6999). 3.Ну и собственно самый русский способ:смещение по красному цвету:) Потребуються красно-синие очки(ищи в инете, ну или 15 вечнодеревянных) и драйвер,сами знаете какой:) Как это все сделать в Дельфи?-спросите вы. Проще,чем Дуську тискать!-отвечу я. В дельфи компонент TImage(картинки где хранишь) имеет свойство Canvas(или полотно). Полотно-это прямоугольная сетка,состоящая из маленьких квадратов, у которых кличка пиксели(Свойство Pixels[x,y]:TColor).Каждый пиксель содержит в себе координату на твоём экране и свой цвет.Левый верхний пиксель полотна считаеться нулевым.Общее количество пикселей по горизонтали определяется свойством - Width,а по вертикали - свойством Height. (всё выше и ниже сказанное можно отнести и к типу TBitmap). Таким образом,если:
//теперь переменная color содержит цвет пикселя.
//теперь соседний пиксель тоже стал голубеньким:)
Теперь рассмотрим данную конструкцию:
Таким образом мы пройдём квадрат 500x500.Это контрукция-основная по работе с цветом. В WinAPI есть такие функции как GetRvalue(),getBvalue(),getGvalue()-они возвращают номер оттенка(0-255) в виде integer в переменную.Например:
Исходник можно взять тут:
всё подробно откоментировано,разберёшься:)Там же готовая прога :
stereo3D_dez.rar. С базой все, перейдем к кодингу.(*Следующий раздел можно
реализовать если вы решитесь публиковать исходные коды.) Создай новый проэкт,сразу же сохрани его. Итого: 1.Две панели(Panel) - закладка Standard.Свойство Caption меняй. 2.Два Image(лепяться поверх панели) - закладка Additional.Ничего менять не надо:) 3.Пять Button - закладка Standard,меняй Caption,как показано на рисунке. Кнопки распологать по возрастанию вниз. 4.два Label - закладка Standard,меняй Caption. 5.Два Edit - закладка та же,менять Text. 6.Два OpenPictureDialog и SavePictureDialog - закладка Dialogs. У TForm1 поменяй свойство Caption и свойство WindowState в ws_Maximized (тогда прога будет грузиться в развёрнутом виде). Теперь в Events создай у первой кнопки обработчик события на клик(кстати кнопка, для соответствия, называеться "Открыть Левую") и напиши туда следующий текст:
Теперь сделай то же самое с Буттоном2,где написано "Открыть правую", и напиши туда следующее:
Теперь тот же обработчик,но на кнопку намбер 3 ,где написано "Убрать красный":
//разбиваем по частям,на синий,красный и зеленый. //убиваем красный,предыдущей картинки.
// сдвиг,определение в зависимости от введенного пользователя.
for y := 1 to w do //присваиваем и разбиваем цвет по переменным.
//обрабатываем, оставляем один красный на "левой"
color2:=Bitmap2.Canvas.Pixels[x1,y1]; //разбиваем цвет.
//присваиваем красный "Левой" картинке "Правой",соблюдая пропорции:)
Ну всё уже практически финишь:)Последняя кнопка номер 5,тот же обработчик на клик и текст:
Чуть не забыл,У Form1 в Events сделай обработчик события на OnCreate и пиши ниже следующие:
Фух,ну как довлен? Надеюсь да, для тебя старался:) |
|
Copyright © 2006-09.
| |