Рисовать на канве можно разными способами. Первый вариант — рисование по пикселям. Для этого используется свойство канвы Pixels. Это свойство представляет собой двумерный массив Canvas->Pixels[int X][int Y], который отвечает за цвета канвы. Например, Canvas->Pixels[10][20] соответствует цвету пикселя, 10-го слева и 20-го сверху. С массивом пикселей можно обращаться как с любым свойством: изменять цвет, задавая пикселю новое значение, или определять его цвет по хранящемуся в нем значению. Например, Canvas->Pixels[10][20] = clBlackin — это задание пикселю черного цвета.
Давайте попробуем нарисовать график некоторой функции F(Х) на канве компонента Image1, если известен диапазон ее изменения Ymax и Ymin и диапазон изменения аргумента Xmin и Хmах. Это можно сделать такой процедурой:
float X,Y; // координаты функции
int PX,PY; // координаты пикселей
for (PX = 0; PX <= Imagel->Width; PX++)
//X — координата, соответствующая пикселю с координатой РХ
X = Xmin + РХ * (Xmax — Xmin) / Imagel->Width;
Y = F(X); //PY — координата пикселя, соответствующая координате Y
PY = Imagel->Height — (Y — Ymin) *Imagel->Height/(Ymax-Ymin); //Устанавливается черный цвет выбранного пикселя
lmagel->Canvas->Pixels[PX][PY] = clBlack;
В этом коде вводятся переменные X и Y, являющиеся значениями аргумента и функции, а также переменные РХ и PY, являющиеся координатами пикселей, соответствующими X и Y. Сама процедура состоит из цикла по всем значениям горизонтальной координаты пикселей РХ компонента Image1. Сначала выбранное значение РХ пересчитывается в соответствующее значение X. Затем производится вызов функции и определяется ее значение Y. Это значение пересчитывается в вертикальную координату пикселя PY. И в заключение цвет пикселя с координатами (РХ, PY) устанавливается черным.
Попробуйте создать соответствующее приложение и посмотреть, как оно работает. Пусть для простоты мы будем ориентироваться на функцию sin(X), для которой Xmin=0, Xmax=4p (2 периода в радианах), Ymin= -l, Ymax=l.
Начните новый проект, поместите на него компонент Image и кнопку с надписью «Нарисовать», в обработчик события OnCIick которой запишите код, аналогичный приведенному выше, но конкретизирующий функцию:
#define Pi 3.14159
float X,Y; // координаты функции
int PX,PY; // координаты пикселей
for (PX = 0; РХ <= Imagel->Width; PX++)
{
//X — координата, соответствующая пикселю с координатой РХ
X = РХ * 4 * Pi / Imagel->Width;
Y = sin(X);
//PY — координата пикселя, соответствующая координате Y
PY = Imagel->Height — (Y+l) * Imagel->Height / 2;
//Устанавливается черный цвет выбранного пикселя
lmagel->Canvas->Pixels[PX][PY] = clBlack;
}
Откомпилируйте ваш проект, сохраните его и выполните.
