Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Рисование по пикселям




 

Рисовать на канве можно разными способами. Первый вариант — рисование по пикселям. Для этого используется свойство канвы Pixels. Это свойство пред­ставляет собой двумерный массив, который отвечает за цвета канвы. Например, Canvas.Pixels[10,20] соответствует цвету пикселя, 10-го слева и 20-го сверху. С массивом пикселей можно обращаться как с любым свойством: изменять цвет, задавая пикселю новое значение, или определять его цвет по хранящемуся в нем значению. Например, Canvas.Pixels[10,20]:= 0 или Canvas.PixelsflO,20]:= clBlack — это задание пикселю черного цвета.

Давайте попробуем нарисовать график некоторой функции F(X) на канве ком­понента Imagel, если известен диапазон ее изменения Ymax и Ymin и диапазон из­менения аргумента Xmin и Хmах. Это можно сделать такой процедурой:

var

X,Y:real; // координаты функции

РХ,PY:longint; // координаты пикселей

begin

for PX:=0 to Imagel.Width do begin

// X — координата, соответствующая пикселю с координатой РХ X:=Xmin+PX*(Xmax-Xmin)/Imagel.Width; Y:=F(X);

// PY — координата пикселя, соответствующая координате Y PY:=trunc(Imagel.Height-(Y-Ymin)*Imagel.Height/(Ymax-Ymin)); (Устанавливается черный цвет выбранного пикселя (0 яркости)} Imagel.Canvas.Pixels[PX,PY]:= 0; end; end;

В этом коде вводятся переменные X и Y, являющиеся значениями аргумента и функции, а также переменные РХ и PY, являющиеся координатами пикселей, со­ответствующими X и Y. Сама процедура состоит из цикла по всем значениям гори­зонтальной координаты пикселей РХ компонента Imagel. Сначала выбранное зна­чение РХ пересчитывается в соответствующее значение X. Затем производится вы­зов функции F(X) и определяется ее значение Y. Это значение пересчитывается в вертикальную координату пикселя PY. И в заключение цвет пикселя с координа­тами (РХ, PY) устанавливается черным.

Попробуйте создать соответствующее приложение и посмотреть, как оно рабо­тает. Пусть для простоты мы будем ориентироваться на функцию sin(X), для кото­рой Xmin = 0, Хmах = 4р (2 периода в радианах), Ymin = -1, Ymax — 1.

Начните новый проект, поместите на него компонент Image и кнопку с надписью «Нарисовать», в обработчик события OnClick которой запишите код, анало­гичный приведенному выше, но конкретизирующий функцию:

// координаты функции // координаты пикселей

var

X,Y:real; РХ, PY:longint; begin

for PX:=0 to Imagel.Width do begin

// X — координата, соответствующая пикселю с координатой РХ X:= РХ * 4 * Pi / Imagel.Width; Y:= Sin(X);

// PY — координата пикселя, соответствующая координате Y PY:=trunc(Imagel.Height-(Y+l)*Imagel.Height/2); {Устанавливается черный цвет выбранного пикселя (0 яркости)} Imagel.Canvas.Pixels[PX,PY]:= 0; end; end;

Откомпилируйте ваш проект, сохраните его и вы­полните.

 




Поделиться с друзьями:


Дата добавления: 2015-03-29; Просмотров: 756; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.