«Формирование изображений программным способом» Delphi. Тема 13: (Объект Canvas)
«Формирование изображений программным способом» План темы: 1. П П ооо инн яя тот ии ее х х х х ооо лол сс тот аапа Р Р ии сс ооо вввв аапа инн ии ее п п п п р-р-р яя мм ыыыы хох,,,, л л л л ооо мм аапа инн ыыыы хох и и и и кк р-р-р ии вввв ыыыы хох л л л л ии инн ии йййй Р Р ии сс ооо вввв аапа инн ии ее г г г г ее ооо мм ее тот р-р-р ии чччч ее сс кк ии хох ф ф ф ф ии гг уууу р-р-р З З аапа ппп ооо лол инн ее инн ии ее в в в в инн уууу тот р-р-р ее инн инн ее гг ооо п п п п р-р-р ооо сс тот р-р-р аапа инн сс тот вввв аапа ффс ии гг уууу р-р-р Р Р ии сс ооо вввв аапа инн ии ее в в в в о о о о гг р-р-р аапа инн ии чччч ее инн инн ооо мм ппп р-р-р яя мм ооо уууу гг ооо лол ьььь инн ии кк ее П П р-р-р ооо гг р-р-р аапа мм мм ии р-р-р ооо вввв аапа инн ии ее э э э э лол ее мм ее инн тот ооо вввв аапа инн ии мм аапа ввц ии ии....
1. Понятие 1. Понятие холста. Формирование изображений программным способом – самый гибкий и универсальный способ формирования изображений, но и самый трудоёмкий (с точки зрения программирования). В В любом визуальном компоненте Delphi, будь то форма или управляющий элемент, существует специальный объект, средствами которого выполняется рисование видимых частей компонента. Он называется холстом и оформлен в виде вложенного объекта Canvas.
1. Понятие 1. Понятие холста. Объект Canvas имеет пять главных составных свойств: Pen – для рисования линий и границ геометрических фигур; Brush – для заполнения фигур; Font – для вывода текста; PenPos.X, PenPos.Y – для хранения текущей позиции рисования; Pixels[X, Y] – массив для записи и считывания цвета пикселов холста.
холста. Благодаря свойству Pixels холст интерпретируется как двумерная матрица пикселов. Элемент, стоящий на пересечении столбца X и строки Y матрицы Pixels, кодирует цвет пикселя. Координатная система объекта Canvas выбрана таким образом, что левый верхний пиксель изображения имеет координаты [0, 0], ось Х направлена вправо, а ось Y – вниз.
холста. Вывод графических примитивов выполняется с помощью методов объекта Canvas, которые мы рассмотрим ниже в этой теме. Команды рисования рекомендуется записывать в обработчике события OnPaint для формы. Оно происходит, когда форма «перерисовывает» себя после какого-либо изменения области обновления.
2. Рисование 2. Рисование прямых, ломаных и кривых линий. Для рисования прямых, ломаных и кривых линий используются следующие методы объекта Canvas: MoveTo(X,Y: Integer) – перемещает указатель текущей позиции в заданную точку (без рисования отрезка); LineTo(X,Y: Integer) – рисует прямую линию от текущей позиции рисования до заданной (X,Y) и перемещает указатель текущей позиции в эту точку;
прямых, ломаных и кривых линий. Polyline(Points: array of Tpoint) – рисует ломаную линию, соединяя точки массива Points. Для получения элемента массива по двум координатам может использоваться функция Point(X, Y : Integer): Tpoint, например – нарисовать равнобедренный треугольник: Canvas.Polyline ([Point (20,100), Point (100, 20), Point(180, 100), Point(20, 100)]);
прямых, ломаных и кривых линий. Arc(X1, Y1, X2, Y2, X3, Y3, X4, Y4 : Integer) – рисует дугу эллипса. Смысл параметров поясняется на рисунке:
3. Рисование 3. Рисование геометрических фигур. Для рисования геометрических фигур предназначены следующие методы объекта Canvas: Rectangle (X1,Y1,X2,Y2: Integer) – рисует прямоугольник с левым верхним углом в точке (X1,Y1) и нижним правым углом в точке (X2,Y2). Прямоугольник рисуется текущими атрибутами кисти и пера.
геометрических фигур. RoundRect (X1,Y1,X2,Y2,X3,Y3: Integer) – рисует прямоугольник с закругленными углами. Углы рисуются как четверти эллипса с шириной X3 и высотой Y3. Смысл параметров поясняет рисунок:
геометрических фигур. Ellipse (X1,Y1,X2,Y2, : Integer) – рисует эллипс, вписанный в прямоугольник с левым верхним углом в точке (X1,Y1) и нижним правым углом в точке (X2,Y2). Эллипс рисуется текущими пером и кистью. Смысл параметров поясняет рисунок:
геометрических фигур. Pie(X1,Y1,X2,Y2,X3,Y3,X4,Y4: Integer) – рисует сектор эллипса, вписанного в прямоугольник с координатами (X1,Y1) и (X2,Y2). Сектор определяется двумя радиусами эллипса, проходящими через точки (X3,Y3) и (X4,Y4). Смысл параметров поясняет рисунок:
4. Заполнение 4. Заполнение внутреннего пространства фигур. Д Для заполнения внутреннего пространства фигур используются следующие методы объекта Canvas: FillRect(const Rect: Trect) – заполняет прямоугольник, используя текущую кисть. Для получения прямоугольника по его координатам может использоваться функция Rect(X1,Y1,X2,Y2 : Integer). ПППП РРРР ИИИИ ММММ ЕЕЕЕ РРРР :::: « « « « ГГГГ р-р-р аапа ддт ии ее инн тот инн аапа яя з з з з аапа лол ии вввв кк аапа »»»»....FloodFill(X,Y: Integer; Color: Tcolor; FillStyle: TfillStyle) – заливает область экрана, используя атрибуты кисти. Заливка начинается в точке (X, Y) и продолжается во всех направлениях до достижения указанной в параметре Color цветовой границы. Способ заполнения области определяется параметром FillStyle (fsBorder, или fsSurface).
5. Рисование 5. Рисование в ограниченном прямоугольнике. Н На практике бывает необходимо рисовать не на всей форме, а в ограниченном прямоугольнике. Для этого применяется компонент PaintBox: П П П П П РРРР ИИИИ ММММ ЕЕЕЕ РРРР :::: « « « « ЗЗЗЗ вввв ее заз ддт инн ооо ее н н н н ее боб ооо »»»»....
6. Программирование 6. Программирование элементов анимации. А Алгоритм простейшей анимации: 1. Нарисовать объект; 2. Сделать паузу; 3. Стереть объект (нарисовать цветом фона); 4. Изменить координаты объекта; 5. Нарисовать объект; 6. Если требуется продолжить, то перейти на пункт 2. ПППП РРРР ИИИИ ММММ ЕЕЕЕ РРРР :::: « « « « ДДДД вввв ии жж ее инн ии ее »»»»....
Далее: Л Лабораторная работа 9. «««« ФФФФ ооо р-р-р мм ии р-р-р ооо вввв аапа инн ии ее и и и и заз ооо боб р-р-р аапа жж ее инн ии йййй ппп р-р-р ооо гг р-р-р аапа мм мм инн ыыыы мм с с с с ппп ооо сс ооо боб ооо мм.... Э Э Э Э лол ее мм ее инн тот ыыыы аапа инн ии мм аапа ввц ии ии »»»»....