Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Общие свойства. Как отмечалось ранее, любая Windows-программа осуществляет вывод информации на экран с помощью GDI (Graphic Device Interface)




ГРАФИЧЕСКИЕ КОМПОНЕНТЫ

 

 

 

Как отмечалось ранее, любая Windows-программа осуществляет вывод информации на экран с помощью GDI (Graphic Device Interface). Функции, реализованные в GDI, являются аппаратно независимыми. Эти функции взаимодействуют с конкретным устройством не напрямую, а через специальную программу, которая называется драйвером устройства. Для любых устройств (мониторов, принтеров, плоттеров и т.д.) используется соответствующий драйвер.

Функции GDI взаимодействуют с драйвером устройства через специальную структуру, называемую контекстом устройства. В качестве контекста в Delphi выступает объект Canvas.

В Delphi имеется несколько независимых классов, которые определяют средства создания изображений. К ним можно отнести TCanvas, TPen, TBrush, TFont. Данные классы Delphi иногда называют классами-надстройками, так как связанные с ними объекты самостоятельно в программе не используются, а выступают как свойства того или иного элемента управления (Form, Edit, …). Рассмотрим основные свойства этих классов.

Класс TPen

 

С помощью этого класса создаются различные линии. Свойства:

 

Color: TColor;

- для задания конкретного цвета. Для задания цвета выделяется целое число в 4 байта. Самый крайний байт определяет яркость красного цвета, следующий – зеленого, последний – синего. Левый байт задает палитру.

Для наиболее часто используемых цветов определены соответствующие константы. Они разбиваются на 2 группы:

1. Цвета, безотносительно, к какому элементу они применяются:

clWhite, …, clNone

2. Цвета, предназначенные для окрашивания каких-либо деталей изображения: полос скроллинга, фона рабочего окна Windows, фона меню и т.д. Это такие цвета как: clWindows, clMenu и т.д.

Цвета второй группы могут меняться в зависимости от настроек Windows:

 

Style: TPenStyle;

- задает цвета путем использования констант:

psSolid,

psDash,

psDot,

psDashDot,

psClean;

 

Width: Integer

- задает толщину линий;

 

TBrush

- задает характеристики кисти;

 

Color: TColor;

- задает цвет кисти. По умолчанию clWhite;

 

Style: TBrushStyle;

- определяет стиль кисти. Для задания стиля используются константы:

bsSolid

bsClear

bsBDiagonal

bsFDiagonal

bsCross

bsDiagCross

bsHorizontal

bsVertical

 

Класс TFont

 

С помощью этого класса задаются характеристики текста. Свойства:

 

Color: TColor;

- задает цвет шрифта. По умолчанию clBlack;

 

Name: TFontName;

- задает название шрифта (например ‘Arial’);

 

Size: Integer;

- задает размер букв;

 

Style: TFontStyle;

- задает стиль букв. Для задания стиля используются константы:

[fsBold], [fsItalic] [fsUnderline], [fsStrikeOut];

 

Способы отображения графики

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

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

· создание изображений с помощью графических компонентов;

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

 

В стандартную библиотеку визуальных компонент Delphi входит несколько объектов, с помощью которых можно придать своей программе совершенно оригинальный вид. Это - TImage (TDBImage), TShape, TBevel. Рассмотрим их.

 

Компонент TImage (отображение картинок)

 

Этот компонент служит для размещения на форме одного из трех поддерживаемых Delphi типов изображений: растровой картинки (расширение *.bmp), пиктограммы (*.ico) или метафайла (*.mtf). Любой из этих типов изображений содержится в центральном свойстве компонента - Picture.

В свойстве Canvas содержится канва, с помощью которой при необходимости программа может отредактировать растровое изображение (но не пиктограмму или метафайл!).

Рассмотрим как можно создать несложный просмотрщик изображений.

1. Поместите на форму панель TPanel, очистите ее свойство Caption и поместите значение alBottom в свойство Alignment. При этом панель займет нижнюю часть формы.

2. Разместите на панели кнопку TButton с надписью «Загрузить».

3. На любое свободное место формы (над панелью) поместите компонент TImage и установите в его свойство Align значение alClient.

4. На любое место (Timage, TPanel или даже TButton) поместите стандартный диалог TOpenPictureDialog (страница Dialogs палитры компонентов). С его помощью пользователь программы может разыскать нужный файл с изображением.

Рассмотрим пример обработчика события OnClick для кнопки Button1:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

if OpenPictureDialog1.Executethen

begin

Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

Image1.Stretch:= True;

end;

end;

 

Запустив программу на выполнение, нетрудно видеть, что при этом предоставляется полноценный диалог по загрузке рисунка.

Заметим, что оператор

Image1.Stretch:= True;

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

Свойства компонента:

Canvas - содержит канву для прорисовки изображения;

 

Center- у казывает, надо ли центрировать изображение в границах компонента. Игнорируется, если:

AutoSize:= True;

или

Stretch:= True;

и изображение не является пиктограммой (ICO);

 

Increment - разрешает/запрещает показ большого изображения по мере его загрузки;

talDisplay –

 

Picture - ц ентральное свойство класса. Служит контейнером изображения TPicture;

 

Propertional: разрешает/запрещает пропорционально уменьшать высоту и ширину изображения, если оно не может целиком уместиться в рабочей зоне компонента;

 

Stretch - разрешает/запрещает изменять размер изображения так, чтобы оно целиком заполнило клиентскую область компонента;

 

Transparent- з апрещает/разрешает накладывать собственный фон изображения на фон компонента.

С помощью методов класса Tpicture, к которому относится свойство Picture, программист может загрузить изображение из файла или буфера межпрограммного обмена Clipboard и сохранить его в файле или буфере.

Для компонента определено событие OnProgress, с помощью обработчика которого программа может получить дополнительную информацию во время выполнения длительной по времени операции загрузки крупного изображения:

Type

TProgressStage = (psStarting, psRunning, psEnding);

TProgressEvent = procedure (Sender: TObject;

Stage: TProgressStage; PercentDone: Byte; RedrawNow:

Boolean; const R: TRect; const Msg: String) of object;

OnProgress: TProgressEvent;

 

Параметры имеют следующий смысл:

Stage - содержит состояние процесса загрузки (psStarting - начало, psRunning - идет загрузка, psEnding - процесс завершен);

PercentDone - приблизительно указывает процент выполненной работы;

RedrawNow – используя этот параметр Windows сообщает, нужно ли сейчас выполнить прорисовку части изображения. Этот параметр имеет смысл, только если свойство IncrementalDisplay компонента содержит True;

r - прямоугольник, нуждающийся в прорисовке;

Msg - содержит одно или более слов, уточняющих состояние процесса.

Компонент TImage позволяет поместить графическое изображение в любое место на форме. Этот объект очень прост в использовании - выберите его на странице Additional и поместите в нужное место формы. Собственно картинку можно загрузить во время дизайна в редакторе свойства Picture (Инспектор Объектов). Картинка должна храниться в файле в формате BMP (bitmap), WMF (Windows Meta File) или ICO (icon). (TDBImage отображает картинку, хранящуюся в таблице в поле типа BLOB. При этом доступен только формат BMP.)

Как известно, форматов хранения изображений гораздо больше трех вышеназванных (например, наиболее известны PCX, GIF, TIFF, JPEG). Для включения в программу изображений в этих форматах нужно либо перевести их в формат BMP, либо найти библиотеки третьих фирм, в которых есть аналог TImage, “понимающий” данные форматы (есть как VBX объекты, так и “родные” объекты для Delphi).

При проектировании следует помнить, что изображение, помещенное на форму во время дизайна, включается в файл.DPR и затем прикомпилируется к EXE-файлу. Поэтому такой EXE-файл может получиться достаточно большой. Как альтернативу можно рассмотреть загрузку картинки во время выполнения программы, для этого у свойства Picture (которое является объектом со своим набором свойств и методов) есть специальный метод LoadFromFile. Это делается, например, так:

 

if OpenPictureDialog1.Execute then

Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

 

Важными являются свойства объекта Center и Stretch - оба имеют булевский тип. Если Center установлено в True, то центр изображения будет совмещаться с центром объекта TImage. Если Stretch установлено в True, то изображение будет сжиматься или растягиваться таким образом, чтобы заполнить весь объект TImage.

 

Обычно в обработчике события по сигналу psStarting создается индикатор процесса типа TProgressBar, по сигналам psRunning изменяется позиция индикатора, а в момент psEnding индикатор уничтожается. Следует учесть, что событие OnProgressBar создается только при загрузке некоторых типов изображений, например, подготовленных в формате JPEG (Joint Photographic Expert Group - объединенная группа фотографических экспертов).

 




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 301; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.038 сек.