Способы вывода графической информации в delphi. Перечень компонентов отображения графической информации. Перечень компонентов отображения графической информации

Описание презентации по отдельным слайдам:

1 слайд

Описание слайда:

2 слайд

Описание слайда:

Среда визуального программирования Delphi, как и Windows, поддерживает графический интерфейс пользователя (GDI – Graphic Delphi Interface). В Delphi существует два способа вывода графической информации: вывод заранее подготовленных изображений; рисование из программы.

3 слайд

Описание слайда:

Первый способ основан на использовании компонентов Image и Shape. Можно воспользоваться готовой картинкой(пиктограммой) или создать их самостоятельно, используя Редактор Изображений Image Editor. Второй способ – это формирование изображений программным способом, используя объект Canvas.

4 слайд

Описание слайда:

Delphi имеет в своём распоряжении специальный объект, который оформлен в виде свойства Canvas. Оно доступно только во время работы приложения, так что управлять им можно только из программы, написав нужный код на языке Object Pascal. Если у объекта есть свойство Canvas, на его поверхности можно рисовать. Наиболее подходящими кандидатами на эту роль являются - сама форма и специальный компонент PaintBox.

5 слайд

Описание слайда:

Oбъект Canvas Свойства: Pen (Перо) –свойство для рисования линий и границ геометрических фигур. Перо следует командам графического курсора и, в свою очередь, имеет свои вложенные свойства: Color – определяет цвет линии (по умолчанию чёрный); Mode – стиль рисования (имеет множество значений, которые здесь не приводятся); Style – стиль линии, который может принимать значения: рsSolid – сплошная (по умолчанию); рsDosh – штриховая; рsDot – пунктирная; рsDoshDot – штрих пунктирная (и др.свойства); Widh – толщина линии (по умолчанию 1 пиксель);

6 слайд

Описание слайда:

Brush (Кисть) – свойство для заполнения фигур, имеющие следующие вложенные свойства: Color – цвет кисти (по умолчанию – белый); Style – орнамент кисти, который может принимать значения: bsClear – сплошная раскраска; bsHorizontal – горизонтальные линии; bsVertical – вертикальные линии; bsFDiagonal – левые диагональные линии; bsBDiagonal – правые диагональные линии; bsCross – клетка; bsDiagCross – косая клетка;

7 слайд

Описание слайда:

Font (Шрифт) – свойство для вывода текста, имеющее следующие вложенные свойства: Color – цвет символов; Height – высота шрифта в пикселях; Name – имя шрифта; Size – размер шрифта; Style –стиль шрифта, который может принимать следующие значения: fsBold – полужирный; fsItalic – курсив; fsUnderline – подчёркнутый; fsStrikeOut – перечёркнутый;

8 слайд

Описание слайда:

PenPos (Позиция пера) – свойство для хранения текущей позиции рисования (определяет положение пера в области рисования в данный момент времени); Pixels –свойство-массив для записи и считывания координат отдельных точек области рисования («холста»).

9 слайд

Описание слайда:

Методы объекта Canvas MoveTo(x,y: integer) –перемещает перо с текущей позиции в точку с заданными координатами х, у без рисования линии; LineTo(х.у: integer) -перемещает перо с текущей позиции в точку с заданными координатами х, у с прочерчиванием линии; Arc(х1, у1, х2, у2, х3, у3, х4, у4: integer) –рисует дугу эллипса, вписанного в прямоугольник с координатами (х1,у1) и (х2,у2). Дуга определяется радиусами эллипса, проходящими через точки (х3,у3) и (х4,у4);

10 слайд

Описание слайда:

Chord(х1, у1, х2, у2, х3, у3, х4, у4: integer) –рисует хорду эллипса по описанию, приведённому для метода Arc; Ellipse(х1, у1, х2, у2: integer) – рисует эллипс, вписанный в прямоугольник с левым верхним углом в точке (х1, у1) и нижним правым углом в точке (х2, у2); FillRect(Rect (х1, у1, х2, у2: integer)) – заполняет прямоугольник цветом, заданным в текущей кисти (Brush). Использует функцию Rect, которая представляет прямоугольник с заданными координатами;

11 слайд

Описание слайда:

FloodFill(х,у: integer; Color: TColor; FillStyle: TFillStyle) – заполнение текущим цветом, заданным в свойстве Brush: при FillStyle=fsBorder – замкнутой области от точки с координатами х, у до границы, определённой цветом Color; при FillStyle=fsSurface – тот участок поверхности, который имеет цвет Color; Pie(х1, у1, х2, у2, х3, у3, х4, у4: integer) –рисует сектор эллипса, вписанного в прямоугольник с координатами (х1, у1) и (х2, у2). Сектор определяется двумя радиусами эллипса, проходящими через точки (х3,у3) и (х4, у4);

12 слайд

Описание слайда:

Polyline (Points: array of TPoint) – рисует ломаную линию, последовательно соединяя точки массива Points; Polygon (Points: array of TPoint) – вычерчивает многоугольники, последовательно соединяя точки массива Рoints. Отличается от метода Polyline тем, что автоматически соединяет конец ломаной с её началом; Rectangle (х1, у1, х2, у2: integer) – рисует прямоугольник с левым верхним углом в точке (х1, у1) и нижним правым углом в точке (х2,y2);

13 слайд

Описание слайда:

Retresh –метод вызывается при необходимости перерисовки изображения; RoundRect (х1, у1, х2, у2, х3, у3: integer) –рисует прямоугольник с закруглёнными углами. Углы рисуются как четверти эллипса с шириной х3 и высотой у3; TextOut (х, у:integer, Text:String) –вывод текста, указанного в параметре Text. Текст вписывается в прямоугольник, верхний левый угол которого имеет координаты х, у.

Слайд 2

«Отображение графической информации в Delphi» План темы: Способы вывода графической информации в Delphi. Отображение картинок. Отображение геометрических фигур. Построение графиков и диаграмм.

Слайд 3

1. Способы вывода графической информации. В Delphi существует несколько способов вывода графической информации: Вывод заранее приготовленных изображений (компоненты Image, Shape); Построение графиков и диаграмм (компонент Chart и др.); Формирование изображений программным способом (объект Canvas).

Слайд 4

Отображение картинок. Отображение картинок при помощи компонента Imageмы рассмотрели в одной из предыдущих тем. Здесь мы рассмотрим пример осуществления простейшей анимации путем периодического изменения отображаемой картинки в компонентах Image. Перейти на пример.

Слайд 5

Отображение геометрических фигур. Отображениепростейших геометрических фигур на форме обеспечивает компонент Shape.

Слайд 6

Отображение геометрических фигур. Основные свойства компонента Shape:

Слайд 7

Отображение геометрических фигур. Из нескольких компонентов Shape можно создавать несложные рисунки. Программно изменяя положение (.Left, .Top) размер(.Width, .Height) и цвет (Brush.Color)компонентов Shape в рисунке можно осуществить элементы простейшей анимации. Рассмотреть пример.

Слайд 8

Построение графиков и диаграмм. Диаграммы предназначены для более наглядного представления массивов численных данных, их визуального отображения и анализа. Пример. Для построения диаграмм в Delphi имеется несколько компонентов, один из них компонент Chart (раздел TeeChart Std).

Слайд 9

Построение графиков и диаграмм. Вид компонента Chart после его установки на форму:

Слайд 10

Построение графиков и диаграмм. Кроме «Инспектора объектов» доступ к свойствам компонента Chart можно получить открыв специальное окно диалога (правая кнопкана компоненте \ Edit Chart…) Добавить серию данных Изменить тип диаграммы

Слайд 11

Построение графиков и диаграмм. Выбор типа диаграммы:

Слайд 12

Построение графиков и диаграмм. Установка свойств для осей координат (Axis):

Слайд 13

Построение графиков и диаграмм. Данные для отображения обычно передаются в Chart программно, пример: Series1.Clear; {очистить серию} for i:=1 to N do Series1.addxy(i, A[i], ‘’, clGreen); Значение по оси X Значение по оси Y Подпись по оси X Цвет данных на диаграмме Рассмотреть пример построения графика функции y = Sin(x)

Слайд 14

Далее: Лабораторная работа № 13.1. «Отображение картинок и геометрических фигур, их анимация». Задание: 1) Разработать приложение для осуществления простейшей анимации путем периодического изменения отображаемой картинки в компонентах Image. (Количество картинок не менее трех, картинки подобрать самостоятельно).

Слайд 15

Задание: 2) Придумать и нарисовать рисунок из компонентов Shape. Программно изменяя положение, размер или цвет компонентов Shape в рисунке осуществить элементы простейшей анимации.

Слайд 16

Далее: Лабораторная работа № 12.2. «Построение графиков и диаграмм». Задание: Модифицировать приложение из лабораторной работы № 9 (Отображение данных в таблице). Добавить возможность отображения некоторых данных из таблицы на гистограмме или круговой диаграмме. 2) Построить график заданной функции.

Посмотреть все слайды

Тема:
Цель лабораторной работы Delphi .

Студенты должны научиться:

  • Создавать графики

Теоретическая часть

Пиктограмма Название Страница Назначение
Image (изображение) Additional
Shape (форма) Additional
DrawGrid

(таблица рисунков)

Additional
Chart

(диаграммы и графики)

Additional
PaintBox

(окно для рисования)

System

Shape Brush

Image:

Chart:

Метод Clear

Метод Add

Метод AddXY

PaintBox:

Задание 1

Задание 2

Задание 3

with PaintBox1, canvas do

Brush.Color:= clRed;

Pen.Color:= clGreen;

Pen.Style:= psDash;

Pen.Color:= clRed;

Пояснение:

Задание 4

Var i:integer;

Series1.Clear;

for i:=0 to 22 do

Series1. AddXY(i*0.29,10* sin(i*0.29),”, clGreen);, где i*0.29 (AXValue) это аргумент, а 10* sin(i*0.29) (AYValue)

  1. y=3.2*(14*x)
  2. y=sin (x)
  3. y=cos (x)
  4. y=x 2 +cos(x)
  5. y=x 2 -4.5*4

Задание 5

with ComboBox1 do begin

Items:=Screen.Fonts;

  1. Сохраните и запустите проект.
  1. Задание к работе.
  2. Вставить код, написанный вами
  3. Вывод о проделанной работе.Тема: Использование графических возможностей.

    Цель лабораторной работы – Познакомиться с графическими возможностями Delphi .

    Студенты должны научиться:

    • Создавать какие-либо графические штуки J
    • Использовать графические возможности
    • Применять графические возможности
    • Создавать графики

    Теоретическая часть

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

    Пиктограмма Название Страница Назначение
    Image (изображение) Additional Используется для отображения графики: пиктограмм, битовых изображений и метафайлов
    Shape (форма) Additional Используется для построения геометрических примитивов
    DrawGrid

    (таблица рисунков)

    Additional Используется для создания в приложении таблицы, которая может содержать графические изображения
    Chart

    (диаграммы и графики)

    Additional Используется для создания диаграмм и графиков
    PaintBox

    (окно для рисования)

    System Используется для создания на форме некоторой области, в которой можно рисовать

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

    Shape : только условно может быть отнесен к средствам отображения графической информации, поскольку просто представляет собой различные геометрические фигуры, соответствующим образом заштрихованные. Основное свойство этого компонента - Shape (форма), которое может принимать значения, Brush (кисть) – это свойство является объектом типа TBrush, имеющим ряд подсвойств, в частности: цвет (Brush.Color) и стиль (Brush.Style) заливки фигуры. Третье из специфических свойство компонента Shape - Pen (перо), определяющее стиль линий.

    Image: основные свойства: Picture – отвечает за загрузку изображения, Stretch – отвечает за размер изображения в компоненте Image, AutoSize – отвечает за размер компонента, в который было загружено изображение с учетом размера изображения.

    Chart: Для задания отображаемых значений надо использовать методы серий Series. Рассмотрим три из них.

    Метод Clear очищает серию от занесенных ранее данных.

    Метод Add : – Add(Const AValue: Double; Const ALabel: String; AColor: TColor)

    позволяет добавить в диаграмму новую точку. Параметр AValue соответствует добавляемому значению функции, а значение аргумента функции заполняется автоматически, поэтому его задавать не нужно, параметр ALabel – название, которое будет отображаться на диаграмме и в легенде, AColor – цвет. Параметр ALabel – не обязательный, его можно задать пустым: ”.

    Метод AddXY – AddXY(Const AXValue, AYValue: Double; Const ALabel: String; AColor: TColor)

    позволяет добавить новую точку в график функции. Параметры AXValue и AYValue соответствуют аргументу и функции. Параметры ALabel и AColor те же, что и в методе Add.

    PaintBox: находиться на странице System. Он представляет из себя простое окно с канвой, где можно рисовать произвольные изображения. Графические инструменты содержаться в свойствах Font, Brush и Pen. Канва (холст) содержится в свойстве Canvas компонента. Само рисование программируется в обработчике события onPaint.

    Задание 1

    1. Создать программу, которые знакомит вас с компонентом Image. Необходимо поместить компоненты: Label, Image, BitBtn, Button. Подписать как на изображении и загрузить любое изображение. Настройте компоненты, чтоб в Image1 изображение входило в рамки, а в Image2 изображение соответствовало своему размеру. Сделайте всплывающие подсказки, при наведении на каждое изображение, свойство Hint отвечает за подсказки, для отображения нужно ввести текст и включить подсказки в свойстве ShowHint.

    Задание 2

    1. Увеличить размер формы, и добавить компоненты: Shape, Label. Подписать.
    2. Каждому компоненту Shape применить свои стили согласно изображению:

    Задание 3

    1. Для примера, расположим компонент PaintBox на форму. Обработчик onPaint:

    with PaintBox1, canvas do

    Brush.Color:= clRed;

    Pie(12,100,140,280,12,100,140,280);

    Pen.Color:= clGreen;

    Pen.Style:= psDash;

    Rectangle(120,60,Width,Height);

    Pen.Color:= clRed;

    Polyline();

    TextOut(75,20,’Здесь может быть Ваш текст!’);

    Пояснение: Первая строка задает цвет заполнения: Brush.Color:= clRed; Вторая рисует часть эллипса: Pie(12,100,140,280,12,100,140,280); Следующие строки задают параметры пера (какая будет окантовка у фигур), ширину, цвет и стиль линии: Pen.Width:= 4; Pen.Color:= clGreen; Pen.Style:= psDash; Но в данном случае мы будем видеть одну сплошную линию, так как при толщине более одного пиксела стиль линий будет psSolid (сплошной). За прорисовку квадрата отвечает следующая строка: Rectangle(120,60,Width,Height); Красную звездочку рисует нижеследующая команда: Polyline(); За вывод текста отвечает последняя строка: TextOut(75,20,’Здесь может быть Ваш текст!’);

    Задание 4

    1. Сделать программу, которая строит заданный график функции y=10*sin(x)

    1. Увеличить в размерах форму и поместить на нее компонентTСhart из вкладки Additional, и разместить компонент Button, Label. Растянуть новый TСhart до удобного для разработки размера.
    2. Заходим в редактор графиков двойным нажатием на компонент. Редактируем и настраиваем внешний вид Series. Для этого нажимаем Add и выбираем тип графика Line и жмем ОК. Для смены заголовка, нажать Title и ввести формулу y=10*sin(x).
    3. Прописать код для вычерчивания графика в событии OnClick компонента Button:

    Var i:integer;

    Series1.Clear;

    for i:=0 to 22 do

    Series1.AddXY(i*0.29,10*sin(i*0.29),”,clGreen);

    Пояснение: метод Series1.Clear; очищает серию от занесенных ранее данных, чтоб при обновлении не было старых значений. Для рисования графика, необходимы значения, в нашем случае 22 значения, при которых происходит прорисовывание графика функцией Series1. AddXY(i*0.29,10* sin(i*0.29),”, clGreen);, где i*0.29 (AXValue) это аргумент, а 10* sin(i*0.29) (AYValue) значение вычисления функции, ” (ALabel) название, которое будет отображаться на диаграмме и в легенде, можно оставить пустым, и clGreen (AColor) – цвет линий.

    1. Самостоятельно выполнить следующее задание: нарисовать график функций
    2. y=3.2*(14*x)
    3. y=sin (x)
    4. y=cos (x)
    5. y=x 2 +cos(x)
    6. y=x 2 -4.5*4

    Задание 5

    1. Создайте приложение, которое позволяет просматривать символы системных шрифтов.
    2. Увеличить в размерах форму, разместить DrawGrid1, ComboBox1, Label. Настройте у компонента DrawGrid1 следующие свойства: RowCount=7, ColCount=32, FixedCols=0, FixedRows=0, DafaultColWidth=20, DefaultRowHeight=20.
    3. Для того чтобы содержимое каждой ячейки перерисовывалось, создайте обработчик события OnDrawCell для компонента DrawGrid1. Для изображения символов шрифта воспользуемся свойством Canvas компонента DrawGrid1. Непосредственно нам понадобится метод TextRect свойства Canvas. Этот метод используется для вывода текстовой информации в определенной ячейке. Обработчик события будет выглядеть так:

    DrawGrid1.Canvas.textrect(rect, Rect.Left, Rect.Top, char ((ARow+1)*32+acol));

    1. Сохраните проект. Убедитесь, что в ячейках таблицы отображаются символы системного шрифта, установленного по умолчанию.
    2. Для выбора шрифта воспользуемся компонентом ComboBox1. Для того чтобы данный компонент содержал все экранные шрифты, надо при создании формы занести их в список. Названия всех экранных шрифтов можно узнать с помощью глобальной переменной Screen типа TScreen. Данная переменная автоматически добавляется во все приложения Delphi. Пе­ременная Screen содержит информацию о текущем состоянии экрана приложения: названия форм и модулей данных, кото­рые используются приложением; данные об активной форме и компонентах, используемых этой формой; размер и разрешение используемого экрана; информацию о доступных приложению курсорах и шрифтах. Информация о доступных приложению шрифтах содержит­ся в свойстве Font, принадлежащем переменной Screen.
    3. Создайте для формы обработчик события onCreate и внесите в него операторы:

    with ComboBox1 do begin

    Items:=Screen.Fonts;

    ItemIndex:=Items.IndexOf(Font.Name);

    1. Сохраните и запустите проект. Компонент DrawGrid1 содержит символы шрифта, установленного в ComboBox1.
    2. Для того чтобы связать значение имени шрифта у DrawGrid1 и ComboBox1, создадим еще один обработчик события:

    DrawGrid1.Font.Name:=ComboBox1.Text;

    1. Сохраните и запустите проект.
    1. Номер, тема, цель лабораторной работы.
    2. Задание к работе.
    3. Описание входных, промежуточных и результирующих данных с указанием их типа.
    4. Программа на языке программирования.
    5. Результат выполнения программы (Введенное данные и полученные данные)
    6. Вставить код, написанный вами
    7. Вывод о проделанной работе.

Работа с графикой в Delphi это не только линии и рисунки, но также и и печать текстовых документов. Поэтому в Delphi работе с графикой нужно уделить немного времени. Работа с графикой в Delphi предполагает обращение к канве - свойству Canvas компонентов. Canvas Delphi это холст, который позволяет программисту иметь доступ к каждой своей точке (пикселу), и словно художнику отображать то, что требуется. Конечно, рисовать попиксельно для работы с графикой в Delphi не приходится, система Delphi предоставляет для мощные средства работы с графикой , облегчающие задачу программиста.

В работе с графикой в Delphi в распоряжении программиста находятся канва (холст, полотно - свойство Canvas Delphi компонентов), карандаш (свойство Pen ), кисть (свойство Brush) того компонента или объекта, на котором предполагается рисовать. У карандаша Pen и кисти Brush можно менять цвет (свойство Color) и стиль (свойство Style). Доступ к шрифтам предоставляет свойство канвы Font . Эти инструменты позволяют отображать как текст, так и достаточно сложные графики математического и инженерного содержания, а также рисунки. Кроме этого, работа с графикой позволяет использовать в Delphi такие ресурсы Windows как графические и видеофайлы.

Конечно, не все компоненты в Delphi имеют эти свойства. На вкладке Additional расположен специализированный компонент TImage , специально предназначенный для рисования, но также свойство Canvas имеют, например, такие компоненты как ListBox, ComboBox, StringGrid, а также и сама Форма, которая размещает наши компоненты! Кроме того, для печати документов Delphi обращается к свойству Canvas такого объекта как принтер.

Основное свойство такого объекта как Canvas Delphi - Pixels типа TColor , то есть это двумерный массив точек (пикселов), задаваемых своим цветом. Рисование на канве происходит в момент присвоения какой-либо точке канвы заданного цвета. Каждому пикселу может быть присвоен любой доступный для Windows цвет. Например, выполнение оператора

Image1.Canvas.Pixels:=clRed;

Приведёт к рисованию красной точки с координатами . Узнать цвет пиксела можно обратным присвоением:

Color:=Image1.Canvas.Pixels;

Тип TColor определён как длинное целое (LongInt). Его четыре байта содержат информацию о долях синего (B), зелёного (G), и красного (R) цветов. В 16-ричной системе это выглядит так: $00BBGGRR . Доля каждого цвета может меняться от 0 до 255. Поэтому чтобы отобразить максимально красную точку, ей нужно присвоить цвет $000000FF .
Для стандартных цветов в Delphi определён набор текстовых констант. Увидеть его можно, открыв в Инспекторе Объектов свойство Color, например, той же Формы.

Следующая таблица содержит некоторые свойства и методы канвы:

Процедура TextOut(X, Y: Integer; const Text: WideString);
Производит вывод строки Text начиная с (X, Y) - левого верхнего пиксела текста.
Свойство TextWidth(var Text: String): Integer;
Содержит длину строки Text в пикселах.
Свойство TextHeight(var Text: String): Integer;
Содержит высоту строки Text в пикселах.
Процедура MoveTo(X, Y: Integer);
Производит перемещение позиции к пикселу с адресом (X, Y).
Процедура LineTo(X, Y: Integer);
Производит рисование прямой линии из точки текущей позиции к пикселу с адресом (X, Y). Адрес (X, Y) становится точкой текущей позиции.
Процедура FillRect(const Rect: TRect);
Заполняет прямоугольник Rect на холсте, используя текущую кисть. Может использоваться, в том числе, для стирания части изображения на холсте.

Напишем, используя только эти методы канвы, приложение для изображения на канве компонента Image текста, который вводится в компонент Memo :

Первое, что мы сделаем, это инициализацию переменных при старте программы. Необходимо определить размеры области рисования (создадим для этого глобальную переменную Rect типа TRect) и сделать цвет фона Image белым:

procedure TForm1.FormCreate(Sender: TObject);
begin
Rect.Left:=0;
Rect.Top:=0;
Rect.Right:=Image1.Width;
Rect.Bottom:=Image1.Height;
Image1.Canvas.Brush.Color:=clWhite;
end ;

Затем нарисуем рамку по сторонам Image:

procedure TForm1.page;
begin
with Image1.Canvas do
begin
MoveTo(0, 0);
LineTo(Image1.Width-1, 0);
LineTo(Image1.Width-1, Image1.Height-1);
LineTo(0, Image1.Height-1);
LineTo(0, 0);
end ;
end ;

Попробуем, что получилось. Всё работает, но рамка пока не выводится. Поэтому добавим процедуру page в в процедуру FormCreate . Теперь красиво. Далее напишем простую процедуру стирания, очищения Image. Её нужно будет вызывать перед любым обновлением изображения, иначе предыдущее и последующее изображения будут перекрываться.

procedure TForm1.clearing;
begin
Image1.Canvas.FillRect(Rect); //Прямоугольник Rect заполняется белым цветом, изображение стирается.
end ;

Теперь пришла очередь непосредственно процедуры вывода текста. Начнём выводить текст от точки (3, 3) - верхнего левого угла листа, с небольшим отступом в 3 пиксела. Каждую последующую строку будем смещать на высоту строки:

procedure TForm1.prn;
var i: Integer;
begin
with Image1.Canvas do
for i:=1 to Memo1.Lines.Count do
TextOut(3, 3+(i-1)*TextHeight("A"), Memo1.Lines);
end ;

Теперь всё готово для вывода текста. Делать это будем по событию OnChange:

procedure TForm1.Memo1Change(Sender: TObject);
begin
clearing;
prn;
page;
end ;

Ну и напоследок процедура изменения размера шрифта:

procedure TForm1.Edit1Change(Sender: TObject);
begin
Memo1.Font.Size:=UpDown1.Position;
Image1.Canvas.Font.Size:=UpDown1.Position;
Memo1Change(Sender);
end ;

Можно модифицировать эту программу для вывода текста на печать. Для работы с принтером нужно подключить модуль Printers :

unit Unit1;

Interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Printers ;

При работе с принтером как с полотном для начала печати вызывается метод BeginDoc , затем производится вывод документа, завершается печать вызовом метода EndDoc :

Printer.BeginDoc;
with Printer.Canvas do
begin
... Печать документа...
end ;
Printer.EndDoc;

Ширина и высота полотна принтера доступны через свойства Printer.PageWidth и Printer.PageHeight . Закончить печать на одной странице и начать печатать на другой можно с помощью метода Printer.NewPage .

ЛАБОРАТОРНАЯ РАБОТА

ТЕМА : « Графика в Delphi – построение простейших
геометрических фигур»

Краткие сведения из теории

Delphi предоставляет разработчику три способа отображения графики:

    построение графиков во время работы программы

    использование заранее созданных графических изображений

    создание изображений при помощи графических компонентов

Для построения графиков созданы специальные классы, предоставляющие инструменты и методы для рисования: инструменты описаны в трех классах – Tfont, Tpen, Tbrush; область рисования и методы предоставляет класс Tcanvas.

Класс Tfont – задает характеристики шрифта, которым отображается текст на канве. Свойства класса описаны в разделе «Основные свойства, доступные для большинства компонент».

Класс Tpen – задает характеристики пера (карандаша), с помощью которого рисуются линии.

Свойства класса Tpen :

Color :Tcolor – цвет линии (по умолчанию – черный)

Width :integer –толщина линии в пикселах;

Style = (psSolid, psDash, psDot, psdashDot, psClear) – определяет стиль линии (сплошная, штриховая, пунктирная, штрих-пунктирная, невидимая)

Класс Tbrush – задает характеристики кисти, которой закрашиваются поверхности изображения.

Свойства класса Tbrush :

Color :Tcolor – цвет кисти (по умолчанию – белый)

Style – орнамент кисти, может принимать значения:

BsSolid – сплошная раскраска

BsClear – отсутсвие закраски

BsVertical – вертикальные линии

BsBdiagonal – правые диагональные линии

BsDiagCross – косая клетка

BsHorisontal – горизонтальные линии

BsFdiagonal –левые диагональные линии

BsCross – клетка

Класс Tcanvas – определяет поверхность, на которой помещается создаваемое изображение, и инструменты, с помощью которых создается изображение: шрифт, карандаш, кисть.

В качестве рабочей области (канвы, «холста») по умолчанию используется вся клиентская область формы (без заголовка, главного меню и линий скроллинга формы), но можно внутри формы отводить меньшие рабочие области при помощи компонентов PaintBox или Image . Начало координаты канвы – верхний левый угол рабочей области, ширина рабочей области определяется свойством ClientWidth , высота – свойством ClientHeight .

Свойства класса Tcanvas :

Canvas :Tcanvas – определяет область рисования

Brush :Tbrush – кисть для закраски замкнутых фигур

Font :Tfont – шрифт для отображения текста на канве

Pen :Tpen – карандаш (перо) для рисования

PenPos :Tpoint – текущее положение невидимого курсора на канве

Замечание : тип Tpoint – определяется следующим образом:

Type Tpoint = record

Pixels: Tcolor - задает цвета пикселов канвы, Х,У – координаты пиксела. Свойство Pixels удобно использовать для построения графиков при помощи точек выбранного цвета.

Основные методы класса TCanvas

    procedure MoveTo (x,y:integer); - перемещает перо без рисования линии в точку с координатами (х,у).

    Procedure LineTo (x,y:integer); - рисует линию от текущей точки до точки с координатами (х,у).

Пример : нарисуем диагональную линию синего цвета на форме из левого верхнего угла формы до правого нижнего угла.

Pen.color:= clblue;

MoveTo(0,0); LineTo(ClientWidth, ClientHeight);

    procedure Rectangle (x1,y1,x2,y2:integer); - рисует прямоугольник: х1,у1 – координаты верхнего левого угла; х2, у2- координаты правого нижнего угла.

Пример : нарисуем закращенный в желтый цвет квадрат со стороной 60 пикселов в середине формы.

var Xc,Yc: integer; //

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.color:=clyellow;

Canvas.rectangle(xc-30,Yc-30,xc+30,Yc+30);

    procedure Ellipse (x1,y1,x2,y2:integer); - рисует эллипс, вписанный в прямоугольник с указанными координатами.

Пример : нарисуем эллипс, вписанный в компонент PaintBox.

PaintBox1.Canvas.Pen.Width:=4; //ширина линии = 4 пиксела

PaintBox1.Canvas.Ellipse(0,0, PaintBox1. ClientWidth, PaintBox1. ClientHeight);

    procedure Polygon (); - рисует замкнутый пмногоугольник, заданный массивом координат.

Пример : нарисуем закрашенный ромб, соединяющий середины сторон формы

Var Xc,Yc:integer; // координаты центра клиентской области формы

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.Color:=Rgb(275,140,70); // оранжевый цвет закраски

Canvas.Polygon();

end;

    Procedure Arc (x1,y1,x2,y2,x3,y3,x4,y4:integer); - отображает дугу эллипса, ограниченного прямоугольником (х1,у1,х2,у2). Дуга отображается из точки с координатами (х3,у3) до точки с координатами (х4,у4) против часовой стрелки.

Пример : нарисуем дугу эллипса, соединяющую середину верхней стороны компонента
PaintBox с серединой его правой стороны.

Procedure Tform1.Button1Click(Sender:Tobject);

Var X3,y3,x4,y4: Integer;

With PaintBox1 do

Canvas.Pen.Color:= clWhite;

Canvas.Pen.Width:= 3;

Canvas.rectangle(0, 0, PaintBox1.ClientWidth, PaintBox1.ClientHeight);

X3:= ClientWidth div 2;

X4:= ClientWidth;

Y4:= ClientHeight div 2;

Canvas.Pen.Color:= clMaroon;

Canvas.ARC(0, 0, PaintBox1.ClientWidth, PaintBox1.ClientHeight, x3, y3, x4, y4);

End;

    procedure Chord (x1,y1,x2,y2,x3,y3,x4,y4:integer); - рисует хорду – прямую, соединяющую 2 точки эллипса: точку с координатами(х3,у3) с точкой (х4,у4).

Пример : пoдставьте в примере, приведенном для метода ARC, метода Chord и получите такой результат.

    procedure Pie (x1,y1,x2,y2,x3,y3,x4,y4:integer); - рисует сегмент эллипса, соединяющий центр эллипса с координатами (х3,у3) и (х4,у4).

Пример : представить в примере, приведенном для метода ARC, метод PIE и получите такой результат.

    procedure TextOut (x,y:integer;Text:string); - выводит строку, переданную в параметре Text, в прямоугольник, верхний левый угол которого задан координатами х,у. Характиристики шрифта задаются инструментом Font.

Пример : напишем название построенного графика внизу формы.

Canvas.Font.Height:=20; //высота символов 20 пикселов

Canvas.Font.Color:=clblue;

Canvas.TextOut(10, ClientHeight-24, ‘график функции SIN(X)’);

Графические компоненты

Delphi предлагает ряд готовых компонентов, позволяющих улучшать пользовательский интерфейс. Эти копоненты размещены на странице Additional и System палитры компонентов.

Компонент Image (класс Timage ) – создан для отображения графических изображений, хранимых во внеших файлах с расширениями:

    Ico(иконка, пиктограмма);

    Bmp (растровое изображение, битовая карта);

    Wmf, .emf (метафайл);

    Jpg, .jpeg(изображение, сжатое по формату JPEG).

Основные свойства :

Autosize :boolean – при значение true компонент подстраивает свои размеры под размеры загружаемого изображения; по умолчанию false.

Stretch :boolean – при значение true загружаемое значение занимает всю область компонента; по умолчанию – false.

Canvas :Tcanvas –служит для рисования внутри компонента на этапе выполнения программы.

Picture :Tpicture-определяет изображение, помещенное в компоненте.

Основные методы класса Tpicture :

Procedure LoadFromFile (Filename:string); - загружает в компонент изображение из файла с именем Filename.

Procedure SaveToFile (Filename:string); -сохраняет изображение из компонента в файл с именем Filename.

Компонент PaintBox - определяет прямоугольную область для рисования. Главное свойство – Canvas , доступны все методы класса Tcanvas, самостоятельных свойств не имеет.

Пример : нарисуем эллипс желтого цвета, вписанный в компонент PaintBox1.

Procedure Tform1Button1Click(sender:Tobject);

With PaintBox1.Canvas do

Brush.Color:=clyellow;

Ellipse(0,0,PaintBox1.ClientWidth, PaintBox1.ClientHeight);

end ;

Компонент BitBtn растровая кнопака

Кнопка BitBtn, в отличие от стандартной, может кроме названия (Caption) содержаить изображение, задаваемое свойством Glyph . Существует набор стандартных кнопок BitBtn, с предопределенными свойствами (с определенной картинкой, надписью и назначением) – тип стандартной кнопки выбирается через свойство Kind . Kind=(bkCustom, bkAbort,bkCancel, bkClose …)

Задание №1

Создайте приложение, которое cодержит на главной форме два компонента Image и 4 кнопки ("Загрузить картинку", "Построить геометрическую фигуру", "Изменить цвет", "Выход"), и позволяет:

а) загружать в компонент Image1, выбранное пользователем графическое изображение таким образом, чтобы изображение занимало всю область компонента Image.

б) под компонентом Image1 выводить надпись «Это картинка из файла.

(при любом измерении размеров и положения компонента Image 1 надпись должна
находиться строго под компонентом).

в) рисовать внутри компонента Image2 геометрическую фигуру: закрашенный сегмент эллипса, соединяющий середину компонента Image с серединами нижней и правой сторон компонента Image.

(при любом изменении размеров и положения компонента Image 2 фигура должна строиться правильно, т.е. согласно заданию относительно компонента Image 2)

г) изменять цвет линии рисуемой в Image2 фигуры по желанию пользователя с помощью компонента ColorDialog.

Задание №2

Создайте приложение, которое позволяет расположить в компоненте Image случайным образом несколько надписей (например, слово «Ура!»). Для реализации используйте генератор случайных чисел Randomize и функцию Random.

Размеры компонента Image, слово выводимое в Image и количество слов – должен вводить пользователь.

Задание №3

Создайте приложение, позволяющее выбирать из списка ListBox название геометрической фигуры и рисовать выбранную фигуру в компоненте Image. Цвет фигуры выбирается из компонента RadioGroup.

Задание №4

Разделите компонент PaintBox1 на 4 равные части, закрасьте каждую часть в разный цвет, например: синий, желтый, зеленый, красный.

Рядом с каждым углом PaintBox1 напишите координаты данного угла (относительно начала координат формы, на которой находится компонент PaintBox1).

Задание №5

С

выбирать из компонента Radiogroup1 тип рисуемой фигуры, из компонента Radiogroup2 - цвет закраски и рисовать в компоненте Image выбранную фигуру.

Задание №6

Создайте приложение, позволяющее задавать пользователю размеры компонента PaintBox1(в пикселях).

Разделите компонент PaintBox1 на 2 равные части, внутри каждой части нарисовать эллипс, закрашенный в цвет, выбранный пользователем в ColorDialog.

Задание №7

Создайте приложение, позволяющее:

выбирать из списка ListBox название геометрической фигуры и рисовать выбранную фигуру в компоненте Image. Фигура должна быть закрашена цветом, выбранным пользователем в компоненте ColorDialog, если в компоненте RadioGroup выбрано значение «Да».

Задание №8

Создайте приложение, позволяющее задавать пользователю размеры компонента PaintBox1(в пикселях).

Разделите компонент PaintBox1 на 4 равные части, внутри каждой части нарисуйте разную геометрическую фигуру (эллипс, ромб, треугольник и прямоугольник). Цвет каждой фигуры, выбирает пользователь в ColorGrid.

Задание №9

ыбирать из списка ListBox название геометрической
фигуры (эллипс, ромб, прямоугольник) и рисовать
выбранную фигуру в компоненте Image. Расположение
фигуры в компоненте Image (I четверть, II четверть,

III или IV четверть) и цвет закраски фигуры выбирается
из компонентов RadioGroup.

Задание №10

Создайте приложение, позволяющее задавать пользователю размеры компонента PaintBox1(в пикселях).

Предусмотреть, что размер стороны не может быть текстом, не может быть отрицательным числом и не может превышать меньшего размера формы.

Разделите компонент PaintBox1 на 4 равные части, внутри каждой части нарисуйте геометрическую фигуру, выбранную пользователем в Combobox (эллипс, ромб, треугольник и прямоугольник). Цвет фигуры, выбирает пользователь в ColorBox.

Задание №11

Создайте приложение, позволяющее:

ыбирать из компонента Radiogroup положение рисуемого

в компоненте Image прямоугольного треугольника, задавать
цвет закраски фигуры или цвет контура в зависимости от
включения кнопок Checkbox. Выбор цвета производить через
компонент ColorGrid.

Задание №12

Создайте приложение, позволяющее задавать пользователю размеры компонента PaintBox1(в пикселях).

Предусмотреть, что размер стороны не может быть текстом, не может быть отрицательным числом и не может превышать меньшего размера формы.

Разделите компонент PaintBox1 на 2 равные части, внутри одной из частей нарисуйте геометрическую фигуру, выбранную пользователем в Combobox (эллипс, ромб, треугольник и прямоугольник). Цвет фигуры, выбирает пользователь в ColorBox.

Например, изменить цвет формы можно следующим образом:

form1.Color:= ColorBox1.Colors;

Задание №13

Создайте приложение, позволяющее:

а) рисовать квадрат в середине формы (размер стороны квадрата вводится пользователем). Предусмотреть, что размер стороны не может быть текстом, не может быть отрицательным числом и не может превышать меньшего размера формы.

б) делить квадрат одной диагональю или двумя в зависимости от включения кнопок Checkbox и каждый полученный треугольник закрашивать в разный цвет. Выбор цвета производит пользователь.

Задание №14

Создайте приложение, позволяющее задавать пользователю размеры компонента PaintBox1(в пикселях).

Предусмотреть, что размер стороны не может быть текстом, не может быть отрицательным числом и не может превышать меньшего размера формы.

Разделите компонент PaintBox1 на 2 равные части, внутри одной части нарисуйте ромб, а внутри другой части нарисуйте любой треугольник. Цвет фигуры, выбирает пользователь в ColorBox.

Например, изменить цвет формы можно следующим образом:

form1.Color:= ColorBox1.Colors;

Задание №15

Создайте приложение, позволяющее:

а) устанавливать размеры компонента Image по горизонтали и вертикали одинаковыми и равными числу, вводимому пользователем с клавиатуры;

(предусмотреть, что размер стороны не может быть текстом, не может быть отрицательным числом и не может превышать меньшего размера формы)

б) делить компонент Image на 4 равных квадрата двумя линиями синего цвета;

в) внутри каждого получившегося квадрата рисовать вписанный в него круг (цвет кругов позволить выбирать пользователю через диалоговое окно выбора цвета).

Задание №16

Создайте приложение, позволяющее задавать пользователю размеры компонента PaintBox1(в пикселях).

Предусмотреть, что размер стороны не может быть текстом, не может быть отрицательным числом и не может превышать меньшего размера формы.

Разделите компонент PaintBox1 на 9 равных частей и закрасьте каждый получившийся прямоугольник в виде шахматной доски. Цвет закраски выбирает пользователь в ColorBox.

Например, изменить цвет формы можно следующим образом:

form1.Color:= ColorBox1.Colors;

Задание №17

На форме расположить два компонента Image и четыре кнопки: Цвет линии, Цвет закраски, Ok и Выход; и компонент Edit.

При нажатии на кнопку ОК в Image1 рисуется квадрат со стороной Х, а в Image2 рисуется прямоугольный треугольник с равными катетами, каждый из которых имеет длину Х.

Вершина треугольника совпадает с началом координат Image2. Одна из вершин квадрата совпадает с началом координат Image1.

Кнопка ОК становится доступной только тогда, когда выбран цвет линии и цвет закраски для рисования фигуры.

Х – выбирает случайным образом, с помощью функции Random и в компоненте Edit должно отображаться значение величины Х.

Задание №18

Создайте приложение, позволяющее задавать пользователю размеры компонента PaintBox1(в пикселях).

Разделите компонент PaintBox1 на 4 равные части, внутри выбранной пользователем части, должен строиться закрашенный круг, размер которого устанавливает пользователь. Цвет закраски пользователь выбирает в ColorBox.

Например, изменить цвет формы можно следующим образом:

form1.Color:= ColorBox1.Colors;



Понравилась статья? Поделиться с друзьями: