Элемент «Группа переключателей»
Группы переключателей предназначены для выбора одного из нескольких вариантов действий. Их можно применять вместо экранных меню, которые использовались ранее в консольных приложениях. На вкладке «Стандартные» панели элементов группы переключателей обозначены пиктограммой
Группы переключателей описываются при помощи класса
TRadioGroup, основные свойства которого приведены в следующей таблице:
Свойство | Значение |
Name | Имя элемента в программе |
Left и Top | Положение в форме |
Width и Height | Ширина и высота |
Caption | Заголовок группы, отображаемый на форме |
Items | Список строк (класс TStrings), который содержит названия элементов группы, между которыми производится выбор |
ItemIndex | Номер выбранного элемента в группе, причем элементы нумеруются с 0. По умолчанию ItemIndex = –1, что обозначает, что никакой элемент не является выбранным |
Для задания списка вариантов необходимо на вкладке свойств инспектора объектов нажать на кнопку с изображением многоточия, появляющуюся при выборе свойства Items:
Для примера рассмотрим форму, на которую вставлены два компонента: группа переключателей и кнопка. В группе переключателей зададим список из трех вариантов. В результате форма будет иметь следующий вид:
Модуль Unit1.pas
UNIT Unit1;
INTERFACE
USES
Windows,Messages,SysUtils,Classes,Controls, ...;
TYPE
TForm1=CLASS(TForm)
RadioGroup1:TRadioGroup;
Button1:TButton;
PROCEDURE Button1Click(Sender:TObject);
END;
VAR
Form1:TForm1;
IMPLEMENTATION
PROCEDURE TForm1.Button1Click(Sender:TObject);
BEGIN
CASE RadioGroup1.ItemIndex OF
0:ShowMessage('Выбран вариант 1');
1:ShowMessage('Выбран вариант 2');
2:ShowMessage('Выбран вариант 3');
END;
END;
END.
Если в списке «RadioGroup1» выбрать некоторый вариант и нажать кнопку «Button1», будет выдано сообщение о выборе соответствующего варианта.
Лекция 10
Основы визуального программирования
Элемент «Изображение»
Элемент «Изображение» предназначены для представления на форме графической информации. На панели элементов он находится на вкладке «Дополнительные» («Additional») и обозначен пиктограммой
Элемент интерфейса «Изображение» описывается с помощью класса TImage, содержащего следующие основные свойства:
Свойство | Значение |
Name | Имя элемента в программе |
Left и Top | Положение в форме |
Width и Height | Ширина и высота области, занимаемой изображением на форме |
Transparent | Логическое значение, определяющее способ отображения: если Transparent=True, то фон изображения будет прозрачным, а если Transparent=False, то фон будет заполнен соответствующим светом |
Picture | Значение типа TPicture, задающее содержащееся в элементе изображение |
Для задания изображения (свойства Picture) можно использовать кнопку с многоточием, выводимую рядом с этим свойством на панели «Инспектор объектов». При нажатии на нее будет выдано диалоговое окно, позволяющее загрузить изображение из файла.
Виды изображений
Все изображения можно разделить на две группы: растровые и векторные.
Растровые изображения представляют собой двумерный массив точек, для каждой из которых независимо может быть задан свой цвет, как показано на следующем рисунке:
Например, экран монитора представляется как растровое изображение.
Достоинства: возможность представлять изображения любой сложности, например фотореалистичные.
Недостатки: для изображений с большим количеством цветов и большим разрешением требуется большой объем памяти, причем занимаемый объем памяти растет квадратично при росте разрешения; плохие возможности масштабирования, так как, например, при увеличении изображения будет увеличиваться только размер точек, что приведет к значительному ухудшению качества.
В Windows стандартный формат представления растровых изображений – битовые карты (Bitmap), хранящиеся в файлах с расширением BMP.
Векторные изображения формируются из геометрических примитивов (отрезков, окружностей, эллипсов и т.д.), например:
Достоинства: малый объем занимаемой памяти, возможность масштабирования.
Недостатки: возможность представлять только достаточно простые изображения, в связи с чем используются для представления схем, чертежей, деловой графики и т.д.
Стандартный формат хранения векторных изображений в Windows – так называемые метафайлы (Metafile) с расширением WMF.
10.3. Класс TPicture
Для представления изображений в Delphi используется класс
TPicture. Этот класс содержит три основных свойства, каждое из которых представляет определенный тип изображения (соответственно, актуальным может быть только одно из них):
Свойство | Значение |
Bitmap | Значение класса TBitmap, представляющее растровое изображение |
Metafile | Векторное изображение (метафайл, класс TMetafile) |
Icon | Значок, или иконка (класс TIcon) – небольшое специальное растровое изображение, содержащее пиктограмму, задающую, например, тип документа. Иконки хранятся в фалах с расширением ICO |
В дальнейшем будем рассматривать только растровые изображения.
10.4. Класс TBitmap
Класс TBitmap используется в Delphi для представления растровых изображений, содержит свойства, приведенные в следующей таблице.
Свойство | Значение |
Width и Height | Ширина и высота изображения в точках. Если размеры изображения превышают размеры области, задаваемой элементом TImage, выходящая за пределы этой области часть изображения отсекается |
Canvas | Значение класса TCanvas, предоставляющего средства для рисования на задаваемом классом TBitmap растровом изображении |
Если никакого изображения не загружено, растровое изображение, представляемое классом TBitmap, является пустым, т.е. его ширина и высота равны 0. Поэтому, для отображения графической информации необходимо сначала задать размеры изображения, содержащегося в элементе TImage. Например, эти размеры можно сделать равными размерам самого элемента TImage, в результате чего для рисования можно будет использовать всю занимаемую этим элементом на форме область.
Для иллюстрации основных свойств классов TImage, TPicture и TBitmap рассмотрим следующий пример формы, содержащей элемент «Изображение» и кнопку:
Процедура обработки события от нажатия кнопки Button1 задает размеры растрового изображения, содержащегося в элементе Image1, равными размерам этого элемента.
Пример
PROCEDURE TForm1.Button1Click(Sender:TObject);
BEGIN
Image1.Picture.Bitmap.Width:=Image1.Width;
Image1.Picture.Bitmap.Height:=Image1.Height;
END;
Уже из приведенного примера видно, что обращаться к свойствам глубоко вложенных друг в друга классов крайне неудобно. В языке Паскаль в таких случаях можно применять описанный далее оператор.
10.5. Оператор WITH
Синтаксис
WITH <Структурная переменная> DO <Оператор>
Оператор WITH применяется для упрощения доступа к свойствам структурных переменных (типа «запись», «объект» или «класс»). Действие оператора можно продемонстрировать, переписав соответствующим образом тело процедуры, приведенной в предыдущем примере.
Пример
WITH Image1.Picture.Bitmap DO
BEGIN
Width:=Image1.Width;
Height:=Image1.Height;
END;
10.6. Класс TCanvas
Класс TCanvas предоставляет средства для рисования на различных типах изображений, например на растровых изображениях, представляемых классом TBitmap. Основные используемые для рисования процедуры класса TCanvas приведены в следующей таблице.
Процедура | Описание |
Rectangle(x1,y1,x2,y2) | Рисование прямоугольника, левый верхний угол которого задается точкой (x1,y1), а правый нижний точкой (x2,y2). При этом внутренняя часть прямоугольника заполняется текущим цветом фона. На растровом изображении рисование прямоугольника происходит следующим образом: При этом в прямоугольник не включаются самая правая и самая нижняя границы. |
MoveTo(x,y) | Перемещение текущей позиции в точку (x,y) |
LineTo(x,y) | Рисование линии из текущей позиции до точки (x,y). При этом текущая позиция перемещается в точку (x,y) |
Ellipse(x1,y1,x2,y2) | Рисование эллипса, вписанного в прямоугольник, задаваемый точками (x1,y1), и (x2,y2) |
Продемонстрируем использование процедур класса TCanvas на примере изображения треугольника с известными сторонами. Расположим треугольник, как показано на следующем рисунке:
,
Перепишем процедуру обработки события от нажатия кнопки
Button1 из рассмотренного ранее примера.
Пример
PROCEDURE TForm1.Button1Click(Sender: TObject);
VAR
a,b,c,p,s,h:Real;
BEGIN
WITH Image1.Picture.Bitmap DO
BEGIN
Width:=Image1.Width;
Height:=Image1.Height;
END;
a:=150;b:=100;c:=120;
p:=(a+b+c)/2;
s:=Sqrt(p*(p-a)*(p-b)*(p-c));
WITH Image1.Picture.Bitmap.Canvas DO
BEGIN
MoveTo(0,0);
LineTo(Round(a),0);
h:=2*s/a;
LineTo(Round(Sqrt(Sqr(c)-Sqr(h))),Round(h));
LineTo(0,0);
END;
END;
Результат работы программы представлен на следующем рисунке.
Библиографический список
1. Архангельский А.Я. Программирование в Delphi 5. 2-е изд., перераб. и доп. М.: Бином, 2000.
2. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979.
3. Бондарев В.М., Рублинецкий В.И., Качко Е.Г. Основы программирования. Харьков: Фолио; Ростов-на-Дону: Феникс, 1997.
4. Ершов А.П. Введение в теоретическое программирование. М.: Наука, 1977.
5. Кнут Д. Искусство программирования для ЭВМ. М.: Мир, 1977. Т.1.
6. Кнут Д. Искусство программирования для ЭВМ. М.: Мир, 1977. Т.2.
7. Культин Н.Б. Программирование в Turbo Pascal 7.0 и Delphi: Самоучитель. 2-е изд. СПб; М.; Дюссельдорф; Киев: BHV, 2000.
8. Новиков Ф.А. Дискретная математика для программистов. СПб: Питер, 2000.
9. Фихтенгольц Г.М. Курс дифференциального и интегрального исчисления, т. 2. М.: Наука, 1966.
Учебная литература
Партин Александр Сергеевич
Программирование на языке Паскаль
Редактор – Т.Н. Газитарова
ИД № 06263 от 12.11.2001
Подписано в печать Формат 60х84
Бумага типографская Офсетная печать Усл. печ. л. ___
Уч.-изд. л. 2,4 Тираж ___ Заказ ___ Цена «с»
Издательство ГОУ УГТУ – УПИ
620002, Екатеринбург, Мира, 19
___