Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Программирование графики в среде визуального программирования Делфи. Компоненты вывода и построения графических изображений.



Читайте также:
  1. B. Ферментация мочевины на среде Кристенсена.
  2. Stand-up с выводами и прогнозами.
  3. Активные компоненты, содержащиеся в косметических средствах серии TianDe для мужчин
  4. Активный тип адаптации человека к своей среде обитания
  5. Алгоритма на языке программирования.
  6. Анализ опыта построения коммунизма в России
  7. Б 2. Принципы построения и организации диагностической деятельности школьного психолога.

Графический режим работы экрана – это основной режим работы экрана. В этом режиме экран делится на отдельные объекты – пиксели. Пиксели образованы из пятен люминофора трех основных цветов – красного, зеленого и синего. Пятна расположены так близко, что цвета сливаются и образуют единый цвет. Отношение интенсивности определяет этот цвет. Общий уровень интенсивности определяет яркость пикселя. Современные мониторы позволяют воспроизводить миллионы цветов и оттенков. Но при программировании в Pascal мы пользуемся 16 основными цветами. Разрешение экрана – это количество пикселей по горизонтали и по вертикали. Записывается разрешение в виде двух цифр – AхB. Наиболее распространенное разрешение – 640х480 – режим VGA. Но существуют и другие режимы разрешения экрана. Для обеспечения работы с экраном компьютер имеет специальные устройства: видеоадаптер, видеоконтроллер и т.д., которые обычно реализуются в виде отдельной видеокарты, Для работы с этими устройствами используются специальные видеодрайверы монитора(драйверы – это специальные программы, которые обеспечивают взаимодействие с внешними устройствами). Для работы в графическом режиме в Турбо Паскаль создан специальный модуль процедур и функций GRAPH, поэтому этот модуль должен быть подключен в области USES: uses GRAPH

Необходимо установить графический драйвер, который устанавливается специальной процедурой Initgraph(N,K,’путь к драйверу’) N и K-это параметры-переменные целого типа, им присваиваются некоторые значения, которые определяют графический драйвер. Графический драйвер-это файл, который имеет расширение bgi.

Кроме того, необходимо установить и путь к библиотеке модуля graph, который называется graph.tpu. Путь к этому каталогу устанавливается в среде Турбо Паскаль (пункт меню Options→Directories).

Графическая система координат

Каждый пиксель имеет в этой системе координат 2 координаты (х,у)

PutPixel(X,Y,C)- установить цвет отдельного пикселя.X,Y-координаты, С-цвет. Цвет можно указать либо константой, либо числовой константой.

Т.о для построения графических изображений в модуле GRAPH есть 2 варианта: - строить по точкам; - использовать графические примитивы(отрезки, прямоугольники, окружности, эллипсы).

Для построения отрезков используются процедуры: Line(X1,Y1,X2,Y2), гдеX1,Y1 – координаты начала, X2,Y2 – координаты конца линии. Линия вычерчивается текущим стилем и текущим цветом. LineTo(X,Y) – строит линию из точки текущего положения указателя в точку с координатами X,Y,(положение текущей точки определяется невидимымграфическим указателем, аналогичным курсору) и LineRel(dX,dY) – имеет 2 параметра, которые определяют проекции на оси X и Y данного отрезка. Наличие этих трех операторов отражает три разных подхода к построению ломаных линий, с помощью которых могут быть изображены различные фигуры. С помощью Line можно строить, если известны координаты точек, которые образуют вершины ломаной. Поэтому лучше иметь 2 массива (Х) и (У). LineTo используется в так называемой черепаховой графике или в случае, если следующие точки ломаной появляются не сразу. Наилучшим вариантом использования черепаховой графики – использование LineRel (черепаховая графика – метод построения с помощью робота-черепашки, который, перемещаясь по экрану оставляет за собой след).

Понятие холста

Многие компоненты в Delphi имеют свойство Canvas (канва, холст), представляющее собой область компонента, на которой можно рисовать или отображать готовые изображения. Это свойство имеют формы, графические компоненты Image, PaintBox и многие другие.

Класс TCanvas имеет набор стандартных свойств и методов, позволяющих выполнять простейшие графические операции.

Свойства и методы класса TCanvas

В качестве свойств используются классы, описывающие цвет и способ заполнения областей формы, цвет и толщину линий, стиль и размер шрифта и др. Дополнительные методы предназначены для вывода на экран изображений и рисунков.

Класс Карандаш (TPen). Карандаш – свойство Pen класса TCanvas, определяется следующими основными свойствами:

- Color – цвет карандаша;

- Style – стиль линии определяет, будет ли она сплошной или пунктирной. Возможные значения: psSolid (сплошная линия); psDash (пунктирная) и другие.

- Width – толщина линии в пикселях.

У канвы имеется свойство PenPos типа TPoint. Это свойство определяет в координатах канвы тукущую позицию пера. Перемещение пера без прорисовки линии, т.е. изменение PenPos, производится методом канвы MoveTo(X,Y). Здесь (X,Y) – координаты точки, в которую перемещается перо. Эта текущая точка становится исходной, от которой методом LineTo(X,Y) можно провести линию в точку с координатами (X,Y). При этом текущая точка перемещается в конечную точку линии и новый вызов LineTo будет проводить точку из этой новой текущей точки.

Класс Кисть (TBrush). Кисть – свойство Brush класса TCanvas, предназначена для заполнения сплошных областей клиентской части формы в соответствии с заданным шаблоном. Кисть имеет свойства Color и Style, совпадающие с аналогичными свойствами класса TPen, в класс TBrush добавлено новое свойство Bitmap, которое позволяет заполнять область не только сплошным цветом или пунктирными линиями, но и заранее подготовленными точечным изображением.

Класс Шрифт (TFont). Шрифт – свойство Font класса TCanvas, служит оболочкой ресурса Windows, определяющего текущий шрифт. Свойства:

- Color – цвет;

- Height – высота шрифта в пикселях;

- Name – название шрифта, под которым он зарегистрирован в Windows, например Times New Roman, Courier, и т.д.

- Size – высота шрифта в пикселях;

- Style – стиль шрифта. Возможные значения: fsBold (полужирный), fsItalic (курсив), fsUnderline (подчеркнутый), fsStrikeOut (зачеркнутый).

Краткое описание методов класса TCanvas

1. procedure Arc (X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer) – рисование части эллипса;

Вычерчивание дуги выполняет метод Arc, инструкция:

Объект.Canvas.Arc (x1,y1,х2,у2,х3,у3,х4,у4)

где: x1, y1, х2, у2 — параметры, определяющие эллипс (окружность), частью которого является вычерчиваемая дуга; х3, у3 — параметры, определяющие начальную точку дуги; П х4, у4 — параметры, определяющие конечную точку дуги.

Начальная (конечная) точка — это точка пересечения границы эллипса и прямой, проведенной из центра эллипса в точку с координатами х3 и у3 (х4, у4). Дуга вычерчивается против часовой стрелки от начальной точки к конечной

2. procedure Chord (X1, Y1, X2, Y2, X3, Y3, X4, Y4): Integer – рисуется замкнутая фигура, созданная пересечением эллипса и отрезка прямой линии (хорды);

3. procedure Ellipse (const Rect: TRect) – рисуется эллипс;

Метод Ellipse вычерчивает эллипс или окружность, в зависимости от значений параметров. Инструкция:

Объект.Canvas.Ellipse(x1,y1, х2,у2]

где: объект — имя объекта (компонента), на поверхности которого выполняется вычерчивание; x1, y1, х2, у2 — координаты прямоугольника, внутри которого вычерчивается эллипс или, если прямоугольник является квадратом, окружность.

4. procedure Pie (X1, Y1, X2, Y2, X3, Y3, X4, Y4: Longint) – рисуется сектор эллипса, расположенный внутри заданного прямоугольника;

Метод pie вычерчивает сектор эллипса или круга. Инструкция:

Объект. Canvas.Pie (x1,y1,x2,y2,х3,у3,х4,у4) где: x1, y1, х2, у2 — параметры, определяющие эллипс (окружность), частью которого является сектор; х3, у3, х4, у4 — параметры, определяющие координаты конечных точек прямых, являющихся границами сектора.

5. procedure Polygon (Points: array of TPoint) – рисуется сложная фигура, состоящая из отрезков, последовательно соединяющих точки, представленные в виде динамического массива элементов TPoint; последняя точка соединяется с первой; внутренняя часть фигуры заполняется в соответствии со значением свойства Brush;

Метод Polygon вычерчивает многоугольник. В качестве параметра метод получает массив типа TPoint. Каждый элемент массива представляет собой запись, поля (х,у) которой содержат координаты одной вершины многоугольника. Метод Polygon вычерчивает многоугольник, последовательно соединяя прямыми линиями точки, координаты которых находятся в массиве: первую со второй, вторую с третьей, третью с четвертой и т. д. Затем соединяются последняя и первая точки.

6. procedure Polyline (Points: array of TPoint) – метод аналогичен предыдущему, но заполнения внутренней части не происходит;

Метод polyline вычерчивает ломаную линию. В качестве параметра метод получает массив типа TPoint. Каждый элемент массива представляет собой запись, поля х и у которой содержат координаты точки перегиба ломаной. Метод Polyline вычерчивает ломаную линию, последовательно соединяя прямыми точки, координаты которых находятся в массиве: первую со второй, вторую с третьей, третью с четвертой

7. procedure Rectangle (const Rect: TRect) – рисуется прямоугольник; внутренняя часть фигуры заполняется в соответствии со значением свойства Brush;

Прямоугольник вычерчивается методом Rectangle, инструкция:

Объект.Canvas.Rectangle (x1,y1,x2,y2)

где: объект — имя объекта (компонента), на поверхности которого выполняется вычерчивание; x1, y1 и х2, у2 — координаты левого верхнего и правого нижнего углов прямоугольника.

8. procedure RoundRect (X1, Y1, X2, Y2, X3, Y3: Integer) – рисуется прямоугольник с округленными углами;

Метод RoundRec тоже вычерчивает прямоугольник, но со скругленными углами. Инструкция вызова:

Объект.Canvas.RoundRec (x1,y1,х2, у2, х3, у3)

где: х3 и у3 — размер эллипса, одна четверть которого используется для вычерчивания скругленного угла.

9. procedure TextOut (X,Y:Integer; const Text: string) – вывод строки в конкретную позицию холста.

ДОПОЛНИТЕЛЬНО

Вычерчивание графических примитивов на поверхности компонента (формы или области вывода иллюстрации) осуществляется применением соответствующих методов к свойству Canvas этого компонента.

Вычерчивание прямой линии осуществляет метод LinеТо, инструкция вызова которого в общем виде выглядит следующим образом:

Компонент.Canvas.LineTo(x,у)

Метод LinеТо вычерчивает прямую линию от текущей позиции карандаша в точку с координатами, указанными при вызове метода.

Начальную точку линии можно задать, переместив карандаш в нужную точку графической поверхности. Сделать это можно при помощи метода MoveTo, указав в качестве параметров координаты нового положения карандаша.

Вид линии (цвет, толщина и стиль) определяется значениями свойств объекта Реп графической поверхности, на которой вычерчивается линия.

Цвет и стиль границы многоугольника определяются значениями свойства Pen, а цвет и стиль заливки области, ограниченной линией границы, — значениями свойства Brush, причем область закрашивается с использованием текущего цвета и стиля кисти.

Поверхности, на которую программа может осуществлять вывод графики, соответствует объект Canvas. Свойство pixels, представляющее собой двумерный массив типа TColor, содержит информацию о цвете каждой точки графической поверхности. Используя свойство Pixels, можно задать требуемый цвет для любой точки графической поверхности, т. е. "нарисовать" точку. И:струкция

Form1.Canvas.Pixels[10,10]:= clRed окрашивает точку поверхности формы в красный цвет

Холст состоит из отдельных точек — пикселов. Положение пиксела характеризуется его горизонтальной (X) и вертикальной (Y) координатами. Левый верхний пиксел имеет координаты (0, 0). Координаты возрастают сверху вниз и слева направо. Значения координат правой нижней точки холста зависят от размера холста.

bsSolid Сплошная заливка

bsClear Область не закрашивается

bsHorizontal Горизонтальная штриховка

bsVertical Вертикальная штриховка

bsFDiagonal Диагональная штриховка с наклоном линий вперед

bsBDiagonal Диагональная штриховка с наклоном линий назад

bsCross Горизонтально-вертикальная штриховка, в клетку

bsDiagCross Диагональная штриховка, в клетку

Для вывода текста на поверхность графического объекта используется метод TextOut. Инструкция вызова метода TextOut в общем виде выглядит следующим образом:

Объект.Canvas.TextOut (x,у,Текст)

где: объект — имя объекта, на поверхность которого выводится текст; х, у — координаты точки графической поверхности, от которой выполняется вывод текста; Текст — переменная или константа символьного типа, значение которой определяет выводимый методом текст.

Шрифт, который используется для вывода текста, определяется значением свойства Font соответствующего объекта canvas. Свойство Font представляет собой объект типа TFont.

Свойства объекта TFont, позволяющие задать характеристики шрифта, используемого методами TextOut и TextRect для вывода текста.

Name Используемый шрифт. В качестве значения следует использовать название шрифта, например Arial

Size Размер шрифта в пунктах (points). Пункт— это единица измерения размера шрифта, используемая в полиграфии. Один пункт равен 1/72 дюйма

Style Стиль начертания символов. Может быть: нормальным, полужирным, курсивным, подчеркнутым, перечеркнутым. Стиль задается при помощи следующих констант: fsBold (полужирный), fsltalic (курсив), f sUnderline (подчеркнутый), f sStrikeOut (перечеркнутый).

Объект. Canvas. Font: = [fsBold, fs Italic]

Color Цвет символов. В качестве значения можно использовать константу типа Tcolor

Иногда требуется вывести какой-либо текст после сообщения, длина которого во время разработки программы неизвестна. Например, это может быть слово "руб." после значения числа, записанного прописью. В этом случае необходимо знать координаты правой границы уже выведенного текста. Координаты правой границы текста, выведенного методом Textout, можно получить, обратившись к свойству PenPos.


Дата добавления: 2015-07-11; просмотров: 162 | Нарушение авторских прав






mybiblioteka.su - 2015-2024 год. (0.012 сек.)