Главная страница
Навигация по странице:

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

  • Procedure Tform1.Button1Click(Sender:Tobject);

  • PaintBox

  • Компонент Image(класс Timage)

  • Tpicture :Procedure LoadFromFile

  • Procedure Tform1Button1Click(sender:Tobject); Begin

  • Графика в Делфи. Графика в Делфи лекция. Тема Графика в Delphi построение простейших геометрических фигур


    Скачать 47.3 Kb.
    НазваниеТема Графика в Delphi построение простейших геометрических фигур
    АнкорГрафика в Делфи
    Дата03.02.2023
    Размер47.3 Kb.
    Формат файлаdocx
    Имя файлаГрафика в Делфи лекция.docx
    ТипДокументы
    #918529

    ТЕМА: «Графика в 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 – определяет поверхность, на которой помещается создаваемое изображение, и инструменты, с помощью которых создается изображение: шрифт, карандаш, кисть.

    Свойства класса 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

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

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

    With canvas do

    Begin

    Pen.color := clblue;

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

    End;
    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;

    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([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;
    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;



    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 палитры компонентов.

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

    Компонент 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
    Создайте приложение, позволяющее задавать пользователю размеры компонента 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];


    написать администратору сайта