Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык программирования Сpp 25.09.11 (2).doc
Скачиваний:
16
Добавлен:
19.08.2019
Размер:
10.09 Mб
Скачать

Методы создания собственной графики. Рисование по пикселам

Чаще всего графические задачи возникают тогда, когда нужно отобразить результаты работы, например, построить график рассчитанной функции. График не может висеть просто так на экране. Он должен быть помещен на специальную подложку или экран. Многие компоненты имеют свойство Canvas (канва, холст), который и является такой подложкой. На канве можно изображать готовые или строить свои рисунки. Свойство Canvas имеют формы, и графические компоненты Image, Paint Box, Bitmap и многие другие.

Каждая точка канвы имеет координаты X и Y. Началом координат является верхний левый угол. Единицей измерения координат является пиксел, т.е. наименьший элемент экрана.

Свойство Canvas не отображается в инспекторе объектов. Им следует воспользоваться при записи кода. Рисовать по канве можно разными способами. Первый способ, это рисовать по пикселям. Делается это с помощью свойства канвы Pixels[int X][int Y] – это двумерный массив, в который записывается цвет пиксела, соответствующего координатам X и Y.

Ниже рассмотрен пример, в котором после нажатия кнопки прорисовывается график функции Y=sin(X). Мы предполанаем, что читатель уже самостоятельно сможет создать проект, в котором на форме находится кнопка «Нарисовать» и объект типа Image. В заголовочные файлы поместите #include<math.h>, а в обработчике событий OnClick запишите следующий код:

#define PI 3.1415926

Int px, py; //координаты пикселей

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

for(PX=0; PX<Image1->Width; PX++) {

X=PX*4*PI/Image1->Width;

Y=sin(X);

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

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

}

В результате после нажатия кнопки появится график синусоиды.

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

Рисование по пикселям имеет очевидный недостаток – разрывы линии, которая должна быть непрерывной. Рассмотрим еще один способ рисования – это рисование с помощью пера.

Канва имеет свойство Pen, т.е. перо. В свою очередь этот объект имеет несколько свойств: Color (цвет), Width (ширина линии), Style (стиль линии: сплошная, штриховая, пунктирная и т.д.).

Таблица. Свойства объекта Реn (карандаш)

Свойство

Определяет

Color

Цвет линии

Width

Толщину линии (задается в пикселах)

Style

Вид линии (psSolid- сплошная; psDash- пунктирная, длинные штрихи; psDot - пунктирная, короткие штрихи; psDashDot - пунктирная, чередование длинного и короткого штрихов; psDashDotDot - пунктирная, чередование одного длинного и двух коротких штрихов; psClear - линия не отображается (используется, если не надо изображать границу области - например, прямоугольника)

Канва имеет так же свойство PenPos, которое определяет координаты пера. Для того, чтобы переместить перо без прорисовки линии используется метод MoveTo(X,Y), где X и Y это координаты точки в которую помещается перо. От этой точки методом LineTo(X,Y) проводится прямая в точку с новыми координатами. Следующий вызов функции LineTo(X,Y) приведет к повторному вычерчиванию прямой от точки в которой остановилось перо до точки с координатами, указанными в качестве аргументов функции.

С помощью пера график той же функции можно нарисовать с помощью следующих инструкций:

#define PI 3.1415926