logo
Методичка лаб по ООП с ИИТ

Лабораторная работа 6. Применение графических компонентов

Большую часть графических компонентов можно найти на странице Additional палитры компонентов.

Компонент Shape представляется 6 вариантами эллипса и прямоугольника. Самыми важными свойствами компонента Shape являются Shape, Pen, Brush.

Свойство Shape определяет, какая именно фигура будет отображена – эллипс, окружность, прямоугольник, квадрат, прямоугольник с закруглёнными краями или квадрат с закруглёнными краями.

Комплексное свойство Pen с помощью своих подсвойств Color, Mode, Style, Width устанавливает параметры границы фигуры.

Задание 1.

  1. Поместите на форму два компонента Shape.

  2. Выберите их оба, присвойте их свойству Shape значение stEllipse.

  3. Свойство Pen.Width установите в 16.

  4. Затем свойству Pen.Style одного из компонентов присвойте значение psInsideFrame.

Свойство Brush определяет то, как будет заполнена внутренняя часть фигуры. Если его подсвойство Style имеет значение bsClear, внутренняя часть фигуры будет пустой, а если bsSolid – окажется заполненной цветом, определяемым значением свойства Brush.Color.

Задание 2. Создание произвольной фигуры.

Художественный набор (компонент PaintBox на странице компонентов System) позволяет нарисовать любую фигуру или комбинацию фигур любого цвета.

  1. Поместите на новую форму художественный набор, придав ему очертание квадрата. Свойству Color придайте значение clWhite и создайте для него обработчик события OnPaint, используя следующий код.

WITH Sender AS TpaintBox, Canvas DO

BEGIN

Brush.Color:=Color;

Pen.Color:=Font.Color;

Polygon([Point(Width DIV 2,0),

Point(Width DIV 5, Height),

Point(Width, 2*( Height DIV 5)),

Point(0, 2*( Height DIV 5)),

Point(4*(Width DIV 5), Height)]);

END;

  1. Запустите программу.

  2. Вернитесь к обработчику события OnPaint и перед строкой, начинающейся со слова Polygon всавьте следующую строку :

SetPolyFillMode (Handle, Winding);

  1. На ту же самую форму поместите ещё один художественный набор, ширина которого вдвое больше высоты. Создайте для него новую заготовку обработчика события OnPaint и замените пару Begin – End следующим кодом:

VAR

R:Trect;

N:Word;

CONST

Rainbow:ARRAY[0..4] OF Tcolor=(clRed,clYellow, clLime, clBlue, clFuchsia);

Begin

WITH Sender AS TpaintBox, Canvas DO

BEGIN

R:=ClientRect;

R.Bottom:=2*R.Bottom;

Pen.Width:=8;

Pen.Style:=psInsideFrame;

For N=0 TO 4 DO begin

Pen.Color:=Rainbow[N];

WITH R DO

Ellipse(left, top, right, bottom);

InflateRect(R, -8, -8);

END;

END;

End;

Данный код рисует радугу.

Задание 3. Управление цветом с помощью цветовой сетки.

На форме разместите фигуру значительного размера и установите её свойства следующим образом.

Свойство Значение

Shape stEllips

Pen.Width 8

На форму ниже фигуры поместите компонент ColorGrid (со страницы компонентов Samples) и установите его свойство GridOrdering в go8*2. Сделайте ширину цветовой сетки равной ширине фигуры, а высоту – такой, чтобы цветные блоки были квадратными. Установите свойство Backgroundindex в 15. В обработчик события OnChange компонента ColorGrid следующие строки:

WITH Sender AS TcolorGrid, Shape1 DO

BEGIN

Pen.Color:=ForegroundColor;

Brush.Color:=BackgroundColor;

END;

Запустите программу. Пощёлкайте левой и правой кнопками мыши на цветовой сетке.

Задание 4.

  1. На новой форме разместите компонент Image, его свойство Stretch установите в True.

  2. Свойству Align, чтобы заполнить пространство формы, присвойте значение alClient.

  3. Озаглавьте форму Image Viewer и помесьтите на неё компонент OpenDialog со свойствами:

Свойство Значение

DefaultExt BMP

Options.ofhideReadonly True

Options.ofFileMustExist True

Title Open Image file

  1. Дважды щёлкните на свойстве Filter компонента openDialog, чтобы вызвать список фильтров и создать фильтры с именами Bitmaps, Icon, Metafiles со значениями *.BMP, *.ICO, *.WMF соответственно.

  2. Поместите на форму меню и создайте упрощённое меню File, содержащие только пункты Open и Exit.

  3. В обработчик события OnClick пункта меню Exit поместите команду Close; в обработчик события OnClick пункта меню Open добавьте следующие строки:

WITH OpenDialog1 DO

If Execute THEN

BEGIN

Screen.Cursor:=crHourglass;

Try

WITH Image1.Picture DO

BEGIN

LoadFromFile(Filename);

WindowState:=wsNormal;

ClientWidth:=Width;

ClientHeight:=Height;

END;

Caption:=ExtractFilename(Filename);

Finally

Screen.Cursor:=crDefault;

End;

END;

  1. Загрузите любое растровое изображение.

Задание 5. Создание строки состояния.

  1. На новой форме разместите панель и установите её свойства:

Свойство Значение

Align alBottom

Alignment taLeftJustify

Beveliner bvLowered

Caption нет

  1. Для панели создайте обработчик события OnClick, содержащий :

Panel1.Caption:=Application.Hint;

  1. Перейдите на страницу Events окна инспектора объектов и отмените связь панели с этим обработчиком события. Используя возможности поиска и замены редактора. Замените все имеющиеся фрагменты Panel1Click на DoShowHint.

  2. В обработчик события OnCreate формы вставьте строку:

Application.OnHint:=DoShowHint;

  1. Разместите на форме любые видимые компоненты. Свойству Hint каждого из них присвойте в качестве значения краткую описывающую строку.

  2. Добавьте на форму меню и откройте окно Menu Designer (Конструктор меню).

  3. Используйте один-два шаблона и создайте краткую подсказку для каждого пункта меню.

Запустите программу и поперемещайте мышь.