334______________________________________________Глава 5

возрастает при перемещении слева направо, а координата Y — при перемещении
сверху вниз.

С координатами вы уже имели дело многократно, но пока вас не очень интере-
совало, что стоит за ними, в каких единицах они измеряются. Координаты изме-
ряются в пикселях. Пиксель — это наименьший элемент поверхности рисунка, с
которым можно манипулировать. Важнейшее свойство пикселя — его цвет. Для
описания цвета используется тип TColor. С цветом вы встречаетесь практически в
каждом компоненте и знаете, что в C++Builder определено множество констант
типа TColor. Одни из них непосредственно определяют цвета (например clBlue —
синий), другие определяют цвета элементов окон, которые могут меняться в зави-
симости от выбранной пользователем палитры цветов Windows (например.
clBtnFace — цвет поверхности кнопок). Полный перечень этих констант с пояснс
ниями см. в главе 15.

Но для графики иногда этих предопределенных констант не хватает. Вам мо
гут понадобиться такие оттенки, которых нет в стандартных палитрах. В этом слу
чае можно задавать цвет 4-байтовым шестнадцатеричным числом, три младших
разряда которого представляют собой интенсивности синего, зеленого и красноп
цвета соответственно. Например, значение $OOFFOOOO соответствует чистому синг
му цвету, $OOOOFFOO — чистому зеленому, $OOOOOOFF — чистому красному.
$00000000 — черный цвет, $OOFFFFFF — белый. Более подробно об этом вы можетг
посмотреть в соответствующем разделе главы 15.

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

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

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

float X,Y;         // координаты функции
int PX,PY;         // координаты пикселей
for (РХ = 0; РХ <= Imagel->Width; PX++)

{
//X — координата, соответствующая пикселю с координатой РХ

Х = Xmin + РХ * (Хтах - Xmin) / Imagel->Hidth;

Y = F(X);

//PY — координата пикселя, соответствующая координате Y

PY = Imagel->Height - (Y - Ymin)*Imagel->Height/(Ymax-Ymin);

//Устанавливается черный цвет выбранного пикселя

Imagel->Canvas->Pixels[РХ][PY] = clBlack;

t

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