Графика и мультимедиа___________________________________335

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

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

ttdefine Pi 3.14159

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

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

Х = РХ * 4 * Pi / Imagel->Width;

Y = sin(X) ;

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

PY = Imagel->Height - (Y+1) * Imagel->Height / 2;

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

Imagel->Canvas->Pixels[PX][PY] = clBlack;

)

Откомпилируйте ваш проект, сохраните его (мы еще к нему вернемся) и вы-
полните. Результат представлен на рис. 5.7 в его левой части. Правая часть будет
рассмотрена в следующем разделе.

Рис. 5.7

Рисование по пикселям и
функцией LineTo

5.1.3.3 Рисование с помощью пера Pen

У канвы имеется свойство Pen — перо. Это объект, в свою очередь имеющий
ряд свойств. Одно из них уже известное вам свойство Color — цвет, которым нано-
сится рисунок. Второе свойство — Width (ширина линии). Ширина задается в
пикселях. По умолчанию ширина равна 1.

Свойство Style определяет вид линии. Это свойство может принимать следую-
щие значения:

psSolid Сплошная линия

psDash Штриховая линия

psDot Пунктирная линия

psDashDot Штрих-пунктирная линия

psDashDotDot Линия, чередующая штрих и,два пунктира

psClear Отсутствие линии

psInsideFrame Сплошная линия, но при Width > 1 допускающая цвета, от-
 личные от палитры Windows