Тема 9 Графические компоненты Delphi
Цель
План
1. Image – изображение
2. Shape – фигура
3. Bevel – обрамление
4. Класс Canvas
1. Image – изображение
Этот компонент служит для размещения на форме одного из трех поддерживаемых Delphi типов изображений: растровой картинки, пиктограммы или метафайла. Любой из этих типов изображения содержится в центральном свойстве компонента - picture. В свойстве canvas содержится канва, с помощью которой при необходимости программа может отредактировать растровое изображение (но не пиктограмму или метафайл!).
Вот как можно создать несложный просмотрщик изображений, окно которого показано на рис. 1:
· Поместите на форму панель TPanei, очистите ее свойство caption и поместите значение alBottom в свойство Alignment - панель займет нижнюю часть формы.
· Разместите на панели кнопку TButton с надписью загрузить.
· На любое свободное место формы (над панелью) поместите компонент Timage и установите в его свойство Align значение alClient.
· На любое место (Timage, TPanei или даже TButton) поместите cтандартный диалог TOpenPictureDialog (страница Dialogs палитры компонентов) - с его помощью пользователь вашей программы сможете разыскать нужный файл с изображением.
Рис. 1.Компонент Tfmage воспроизводит изображение
Напишите такой обработчик события onСlick для кнопки Button1:
procedureTFormI.ButtonlClick(Sender: TObject) ;
Begin
if OpenPictureDialogI.Execute then
Begin
Imagel.Picture.LoadFromFile -(OpenPictureDialogI.FileName);
Imagel.Stretch := True
End
End;
Замечу, что оператор
Imagel.Stretch := True
масштабирует изображение так, чтобы оно занимало всю рабочую область TImage.
Свойства компонента:
property Center: Boolean; | Указывает, надо ли центрировать изображение в границах компонента. Игнорируется, если Autosize=True или если Stretch =True и изображение не является пиктограммой (ICO) |
property Canvas : TCanvas; | Содержит канву для прорисовки изображения |
property Transparent: Boolean; | Запрещает/разрешает накладывать собственный фон изображения на фон компонента |
property Proportional: Boolean;property Stretch: Boolean; | Разрешает/запрещает изменять размер изображения так, чтобы оно целиком заполнило клиентскую область компонента |
property Picture: TPicture; | Разрешает/запрещает пропорционально уменьшать высоту и ширину изображения, если оно не может целиком уместиться в рабочей зоне компонента |
property IncrementalDisplay: Boolean; | Разрешает/запрещает показ большого изображения по мере его загрузки Центральное свойство класса. Служит контейнером изображения |
С помощью методов класса TPicture , к которому относится свойство picture, программист может загрузить изображение из файла или буфера межпрограммного обмена clipboard и сохранить его в файле или буфере.
Для компонента определено событие onprogress, с помощью обработчика которого программа может получить дополнительную информацию во время выполнения длительной по времени операции загрузки крупного изображения:
typeTProgressStage = (psStarting, psRunning, psEnding) ;
TProgressEvent = procedure(Sender: TObject;
Stage: TProgressStage; PercentDone: Byte;
RedrawNow: Boolean;
const R:
TRect; constMsg: String) of object;
propertyOnProgress: TProgressEvent
Параметр stage содержит состояние процесса загрузки (psStarting - начало, psRunning - идет загрузка, psEnding - процесс завершен). Параметр PercentDone приблизительно указывает процент выполненной работы. С помощью параметра RedrawNow Windows сообщает, нужно ли сейчас выполнить прорисовку части изображения. Этот параметр имеет смысл, только если свойство incrementaiDis-play компонента содержит True. r - прямоугольник, нуждающийся в прорисовке. Msg содержит одно или более слов, уточняющих состояние процесса. Обычно в обработчике события по сигналу psStarting создается индикатор процесса типа TprogressBar, по сигналам psRunning изменяется позиция индикатора, а в момент psEnding индикатор уничтожается. Следует учесть, что событие onprogress создается только при загрузке некоторых типов изображений, например, подготовленных в формате JPEG (Joint Photographic Expert Group - объединенная группа фотографических экспертов) [ Для поддержки JPEG в Delphi включен специальный класс TJPEGImage. Пример использования этого класса, а также события OnProgress вы найдете в программе help\examples\jpeg\jpegproj.dpr каталога размещения Delphi. ].
2. Shape – фигура
Компонент рисует одну из простейших геометрических фигур, определяемых следующим множеством:
typeTShapeType = (stRectangle, stSquare, stRoundRect, stRoundSquare, stEllipse, stCircle) ;
(прямоугольник, квадрат, скругленный прямоугольник, скругленный квадрат, эллипс, окружность). Фигура полностью занимает все пространство компонента. Если задан квадрат или круг, а размеры элемента по горизонтали и вертикали отличаются, фигура чертится с размером меньшего измерения.
Помимо стандартных чертежных инструментов Brush и pen (шрифт для компонента не нужен) в компоненте определено свойство shape.' TShapeType, которое и задает вид геометрической фигуры. Изменение этого свойства приводит к немедленной перерисовке изображения
3. Bevel – обрамление
Компонент класса TBevel носит оформительский характер и предназначен для выделения группы элементов или отделения их друг от друга. Свойство
typeTBevelShape = (bsBox, bsFrame, bsTopLine, bsBottomLine, bsLeftLine, bsRightLine);
propertyShape: TBevelShape;
определяет вид компонента (прямоугольник, рамка, верхняя линия, нижняя линия, левая линия, правая линия).
Свойство
typeTBevelStyle = (bsLowered, bsRaised) ;
propertyStyle: TBevelStyle;
задает стиль компонента (вдавленный или выпуклый).
Литература: 1, с.54-67.
Контрольные вопросы.
1. Какие свойства и события использует компонент Image – изображение
2. Какие свойства использует компонент Shape – фигура
3. Какие свойства использует компонент Bevel – обрамление