- •Компьютерная графика.
- •2. Задачи кг.
- •Графические функции примитивов.
- •4. Вывод текста.
- •5. Понятие холста.
- •6. Графические примитивы
- •7. Базовые компоненты
- •9. Метрическое пространство
- •10) Двумерные аффинные преобразования координат.
- •Поворот Rotate
- •Тражение Reflection
- •Сдвиг (Деформация)
- •Растяжение и сжатие
- •16. Окно и область вывода.
- •17. Растровая графика, общие сведения
- •Достоинства и недостатки растровой графики
- •18. Цвет в растре. Модель rgb.Кодировка цвета и яркости.
- •19. Цвет в растре. Модель cmy.
- •20. Растровые дисплеи.
- •23. Системы с телевизионным растром
- •24. Видеоадаптер
- •25.Дисплеи с регенерацией
- •26. Понятие фрактала и фрактальной графики.
- •27. Построение линий на растре.
- •28. Алгоритм Брезенхэма
- •29. Векторная графика: назначение, элементы, структура.
- •30. Каноническое уравнение прямой.
- •31. Параметрическое уравнение прямой и уравнение в отрезках. Параметрические уравнения прямой
- •32. Алгоритм определения принадлежности точки внутренности треугольника
- •34. Кривая Безье. Геометрическая интерпретация.
- •35. Раскраска на основе растровой развертки.
- •36. Заливка области с затравкой
- •0.5.1 Простой алгоритм заливки
- •37. Понятие точки схода.
- •38. Перспективные преобразования: подходы и решения.
- •39. Видовое преобразование координат.
- •40. Перспективное преобразование координат.
- •41. Аналитическая модель поверхности
- •Векторная полигональная модель
- •43. Равномерная сетка
- •Неравномерная сетка. Изолинии
Графические функции примитивов.
Графические примитивы — это заранее определенные основные геометрические элементы, при помощи которых строятся более сложные модели.
Примитивы имеют следующие свойства: - Цвет (color); - Тип линий (linetype); - Масштаб типа линий
и др.
line(int x1, int y1, int x2, int y2) – линия из точки (x1,y1) в точку (x2,y2)
lineto(int x, int y)
moveto(int x, int y) – помещает курсор в точку (x,y)
linerel(int dx, int dy)
cirele(int x, int y, int radius) – окружность с радиусом L из точки (x, y)
arc(int x, int y, radius) – дуга окружности
drawpoly() – контур многоугольника
ellipse() – эллипс
rectangle(int left, int top, int right, int bottom) – прямоугольник
setlinestyle(стиль, 0, толщина) - устанавливает текущий стиль линии
floodfill(int x, int y, int bordercolor) – раскрашивание контура многоугольника
setfillstyle(int pattern, color) – заштриховка многоугольника
bar() – закрашенный столбик
bar3d() – заполненный столбик в 3D
fillellipse() – заполненный эллипс
fillpoly() – заполненный многоугольник
pieslice() – заполненный сектор круга
sector() – заполненный эллипт.сектор
setviewport(int left, int top, int right, int bottom, int flag) – размер окна
cleardevice() – очищает активную страницу
clearviewport() – очищает окно
getimage()/putimage() – записывает в память образ/возвращает записанный образ
initgraph(*driver; mode; *putch) - инициализирует графическую систему (driver – драйвер, mode – режим драйвера, putch – путь к пакету)
closegraph() – закрывает графику и устанавливает текстовый режим
void far setcolor(intcolor) – установка цвета
4. Вывод текста.
outtext(char far *textstring) - выводит строку на экран
outtextxy(int x, int y, char far *string) – выводит строку с заданной позиции
settextjustify() – ориентация текста
setusercharsize() – устанавливает шрифт, стиль, размер шрифта
textwidth(char far *string) - ширина строки в пикселах
textheight(char far *string) – высота строки в пикселах
settextstyle(int font,int direction, int charsize)
font = 0,1,2,3,4(шрифт)
0 DEFAULT_FONT – по умолчанию
1 TRIPLEX_FONT - триплекс
2 SMALL_FONT- малый
3 SANS_SERIF_FONT - сансериф
4 GOTIC_FONT готический
Direction(направление)
0 HORIS_DIR – горизонтальн. 1 VERT_DIR – вертикальн.
Пример:
#include <graphics.h>
main()
{int dY,XC;
initgraphics()
settextfustify(CENTER_TEXT, CENTER_TEXT);
settextstyle(TRIPLEX_FONT, VERT_DIR, 3);
outtextxy(XC,dY, «Turbo C»);
closegraph();}
5. Понятие холста.
Canvas — холст для рисования. Для того чтобы на поверхности формы или компонента image появилась линия, окружность, прямоугольник или другой графический элемент (примитив), необходимо к свойству Canvas применить соответствующий метод. Например, оператор Forml->Canvas->Rectangle(10,10,50, 50); рисует на поверхности формы прямоугольник.
Методы вычерчивания графических примитивов
Метод |
Действие |
LineTo(x,y) |
Рисует линию из текущей точки в точку с указанными координатами |
Rectangle (x1,y1,x2, y2) |
Рисует прямоугольник, x1, y1 и х2, у2 — координаты левого верхнего и правого нижнего углов прямоугольника. Цвет границы и внутренней области прямоугольника могут быть разными |
FillRect (x1,y1,x2,y2) |
Рисует закрашенный прямоугольник, x1, y1, х2, у2 — определяют координаты диагональных углов |
FrameRect(x1,y1,x2,y2) |
Рисует контур прямоугольника, x1, y1, х2, у2 — определяют координаты диагональных углов |
Методы вывода графических примитивов рассматривают свойство canvas как некоторый абстрактный холст, на котором они могут рисовать (Canvas переводится как "поверхность", "холст для рисования"). Холст состоит из отдельных точек — пикселов. Положение пиксела на поверхности холста характеризуется горизонтальной (X) и вертикальной (Y) координатами. Координаты возрастают сверху вниз и слева направо (рис. 3.1). Левый верхний пиксел поверхности формы (клиентской области) имеет координаты (0, 0), правый нижний — (ciientwidth, clientHeight). Доступ к отдельному пикселу осуществляется через свойство Pixels, представляющее собой двумерный массив, элементы которого содержат информацию о цвете точек холста.
Карандаш и кисть Вид графического элемента определяют свойства Реn(карандаш) и Brush (кисть) той поверхности (Canvas), на которой рисует метод. Карандаш и кисть, являясь свойствами объекта Canvas, в свою очередь представляют собой объекты Реn и Brush. Свойства объекта Реn (табл. 3.2) задают цвет, толщину и тип линии или границы геометрической фигуры. Свойства объекта Brush (табл. 3.3) задают цвет и способ закраски области внутри прямоугольника, круга, сектора или замкнутого контура. Таблица 3.2. Свойства объекта Реn (карандаш)
Свойство |
Определяет |
Color |
Цвет линии |
Width |
Толщину линии (задается в пикселах) |
Style |
Вид линии (psSolid— сплошная; psDash— пунктирная, длинные штрихи; psDot — пунктирная, короткие штрихи; psDashDot — пунктирная, чередование длинного и короткого штрихов; psDashDotDot — пунктирная, чередование одного длинного и двух коротких штрихов; psClear — линия не отображается (используется, если не надо изображать границу области — например, прямоугольника) |
Таблица 3.3. Свойства объекта Brush (кисть)
Свойство |
Определяет |
Color |
Цвет закрашивания замкнутой области |
Style |
Стиль заполнения области (bsSolid — сплошная заливка. Штриховка: bsHorizontal — горизонтальная; bsVertical — вертикальная; bsFDiagonal — диагональная с наклоном линий вперед; bsBDiagonal — диагональная с наклоном линий назад; bsCross — в клетку; bsDiagCross — диагональная клетка |
Ниже приведена функция обработки события onPain, которая рисует на поверхности формы олимпийский флаг.
void__fastcall TForml::FormPaint(TObject *Sender)
{
// полотнище флага
Canvas->Pen->Width = 1;
Canvas->Pen->Color = clBlack;
Canvas->Brush->Color = clCream;
Canvas->Rectangle(30,30,150,150);
Canvas->Pen->Width =2; // ширина колец
Canvas->Brush->Style = bsClear; // чтобы круг, нарисованный
// методом Ellipse, не был закрашен
// рисуем кольца
Canvas->Pen->Color = clBlue; Canvas->Ellipse(40,40,80,80) ;
Canvas->Pen->Color = clBlack; Canvas->Ellipse(70,40,110,80);
Canvas->Pen->Color = clRed; Canvas->Ellipse(100,40,140,80);
Canvas->Pen->Color = clYellow; Canvas->Ellipse(55,65,95,105);
Canvas->Pen->Color = clGreen; Canvas->Ellipse(85,65,125,105); }
