СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Лабораторная работа по теме "Графика в Delphi"

Категория: Информатика

Нажмите, чтобы узнать подробности

Методическая разработка содержит краткие теоретические сведения по теме "Графические средства Delphi" и 18 разных заданий для выполнения лабораторной работы по теме "Построение простейших геометрических фигур в Delphi".

Просмотр содержимого документа
«Лабораторная работа по теме "Графика в Delphi"»

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


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


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

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

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

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

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



Для построения графиков созданы специальные классы, предоставляющие инструменты и методы для рисования: инструменты описаны в трех классах – 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

X : longint;

Y : longint;

End;

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



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

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

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

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

With canvas do

Begin

Pen.color := clblue;

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

End;


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

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

……

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

Begin

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.color:=clyellow;

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

End;


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

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

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

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


  1. procedure Polygon([Point(X1,Y1), Point(X2,Y2), Point(X3, Y3), Point(X4,Y4), …]); - рисует замкнутый пмногоугольник, заданный массивом координат.

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

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

Begin

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

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

Canvas.Polygon([Point(Xc,0),Point(ClientWidth,Yc),Point(Xc, ClientHeight),Point(0,Yc)]);

end;


  1. 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;

Begin

With PaintBox1 do

Begin

Canvas.Pen.Color := clWhite;

Canvas.Pen.Width := 3;

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

X3 := ClientWidth div 2;

Y3 := 0;

X4 := ClientWidth;

Y4 := ClientHeight div 2;

Canvas.Pen.Color := clMaroon;

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

End;

End;


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

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



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

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



  1. 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);

Begin

With PaintBox1.Canvas do

Begin

Brush.Color:=clyellow;

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

End;

end;

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

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




Задание №1


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

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

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

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

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

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

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



Задание №2


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

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



Задание №3


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










Задание №4


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

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

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

Задание №5


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

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










Задание №6


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

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

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



Задание №7


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

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








Задание №8


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

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

Задание №9


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

в


II I




III IV


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

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



Задание №10


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

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

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

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

form1.Color:= ColorBox1.Colors[ColorBox1.ItemIndex];



Задание №11


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

в

II I




III IV


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

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




Задание №12


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

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

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

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

form1.Color:= ColorBox1.Colors[ColorBox1.ItemIndex];



Задание №13


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

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

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




Задание №14


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

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

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

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

form1.Color:= ColorBox1.Colors[ColorBox1.ItemIndex];



Задание №15


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

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

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

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

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



Задание №16


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

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

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

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

form1.Color:= ColorBox1.Colors[ColorBox1.ItemIndex];



Задание №17


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

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

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

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

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




Задание №18


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

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

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

form1.Color:= ColorBox1.Colors[ColorBox1.ItemIndex];