Графические компоненты Delphi. Презентация на тему "Отображение графической информации в Delphi" Компонент отображения графической информации в delphi

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

ТЕМА : « Графика в 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;

Слайд 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»
План темы:
1. Способы вывода графической
информации в Delphi.
2. Отображение картинок.
3. Отображение геометрических
фигур.

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

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


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

3. Отображение геометрических фигур.
Основные свойства компонента Shape:
Brush
Pen
Shape
Цвет (.Color) и стиль (.Style) для
заполнения фигуры.
Цвет (.Color), стиль (.Style), ширина
(.Width) и способ вывода (.Mode) линий
фигуры.
Вид геометрической фигуры.

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

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

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

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

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

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

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

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

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

Далее:
Лабораторная работа № 13.2.
«Построение графиков и диаграмм».
Задание:
1) Модифицировать приложение из
лабораторной работы № 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. Вывод о проделанной работе.

Библиотека визуальных компонентов (англ. Visual Component Library, VCL) Delphi для отображения графической информации предоставляет нам следующие визуальные компоненты: Image (изображение), PaintBox (окно для рисования), DrawGrid (таблица рисунков), Chart (диаграммы и графики), Animate (вывод видеоклипов), а также форма Form. Эти компоненты обладают свойством Canvas (о нем рассказано выше), который дает доступ к каждому пикселю. Конечно, рисовать попиксельно для работы с графикой в Delphi не приходится, система Delphi предоставляет мощные средства работы с графикой.

Рассмотрим вышеприведенные компоненты подробнее:

Компонент Image (изображение)

Является объектом класса TImage. Используется для вывода на экран изображений, считываемых из графических файлов. По умолчанию выводит на поверхность формы изображения представленных в *.bmp формате. Для вывода изображений в jpg формате необходимо в дерективе uses подключить модуль JPEG. Находится во вкладке Additional Палитры компонентов.

После размещения на форме компонента Image, он принимает вид выделенной прямоугольной области.

Рисунок 9 - Компонент Image на форме

Для открытия диалога для выбора нужного изображения необходимо выполнить следующее c помощью Object Inspector. Для этого находим свойство Picture и слева от него нажимаем на три точки. Открывается окно Picture Editor и в нем выбираем загрузить (Load), в раскрывшемся окне выбираем файл изображения.

Так же это можно осуществить программно путем вызова метода LoadFromFile свойства Picture:

Image1.Picture.LoadFromFile("name_pic.jpeg") ;

где name_pic.jpeg - имя файла.

Таблица 8 - Основные свойства компонента Image

Свойство

Описание

Изображение отображающееся в поле компонента

Размеры компонента. Если эти размеры меньше размера иллюстрации, а значение свойств Strech, AutoSize и Proportional равны False, то отображается часть изображения

Позволяет автоматически масштабировать картинки без искажения. Для выполнения масштабирования, значение свойства AutoSize должно быть равным False

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

Позволяет автоматически изменять размер компонента в соответствии с размером изображения

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

Поверхность, позволяющая вывести графику

Указывает прозрачный цвет фона изображения

Пример 1: Написать программу, для просмотра изображений, с использованием компонента Image. Программа должна обладать следующими возможностями:

  • · просматривать изображения, находящиеся в папке;
  • · просматривать изображение в полном размере или в формате, наиболее походящем для размеров окна;
  • · управлять файлами изображений, а также печатать, сохранять, удалять и изменять изображения;
  • · при необходимости открывать изображение в программе редактирования;

Рисунок 10 - Окно программы до ее запуска

Создание проекта:

  • 1. Создать папку для файлов программы и запустить интегрированную среду разработки Delphi.
  • 2. Добавить на форму компоненты:

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

  • · ScrollBox Он необходим в случае, когда в полноразмерном режиме изображение выйдет за пределы Image. Его свойству Aling присваиваем значение alClient для того чтобы его размеры менялись пропорционально с размерами окна. И на нем размещаем компонент Image;
  • · Также добавим компоненты-диалоги SavePictureDialog и OpenPictureDialog, предназначенные для сохранения и открытия изображений. Первый нам необходим для копирования изображения в выбранную директорию, вторая - для вызова диалога открытия графического файла. Расположены они на странице Dialogs Палитры компонентов. Еще из этой страницы нам понадобится компонент PrintDialog, нужный нам для вызова диалога выбора принтера для печати.
  • · Добавим MainMenu для добавления к программе главного меню и XPManifest для более красочного оформления
  • · Так же нам необходимо где-то хранить имена изображений, лежащих в рабочей директории. Для этих целей удобен компонент ListBox, который при обработке события Create формы Form1 можно скрыть.
  • · Для размещения кнопок навигации и удобной работы с ними добавим панель Veil, на которой и разместим эти кнопки (Предыдущее изображение, Следующее изображение, Истинный размер, Подогнать размер, Удалить, Копировать в, Печать, Редактировать). В качестве компонента для них выбран SpeedButton.
  • · Добавляем таймер для отлова нажатий клавиш «Влево» (предыдущее изображение), «Вправо» (следующее изображение) и клавиши «Del» (удаление изображения).
  • · И еще один компонент - ProgressBar, отображающий процесс загрузки больших *.Jpg файлов.
  • 3. Написать код обработки события нажатия на кнопки (Предыдущее изображение, Следующее изображение, Истинный размер, Подогнать размер, Удалить, Копировать в, Печать, Редактировать). Написать код обработки события нажатия на пункты меню MainMenu (Выход, Открыть, Закрыть, Создать).
  • 4. Задать начальные установки создания формы. Дважды щелкнуть мышью по свободному месту формы и написать код процедуры procedure TForm1.FormCreate(Sender:TObject), см. код модуля в Приложении 1.
  • 5. Написать процедуры следующего вида:

procedure FindFileInFolder(path, ext: string);

Эта процедура сканирует папку path на наличие файлов по маске ext.

Полный листинг кода модуля программы расположен в Приложении 1 (Листинг программы 3).

  • 1. Перечислите возможности компонента Image.
  • 2. Объектом какого класса является компонент Image?
  • 3. 3. Какой тип файлов по умолчанию поддерживает компонент Image?
  • 4. 4. Перечислите основные свойства компонента Image.
  • 5. 5. Какое свойство хранит изображение компонента Image?
Понравилась статья? Поделиться с друзьями: