Просмотр содержимого документа
«Аукцион знаний на тему «Форматы графических файлов. Классы для хранения графических объектов TPicture, TBitMap, TIcon»»
Министерство образования и науки Республики Казахстан
РГКП «Семипалатинский финансово-экономический колледж имени Рымбека Байсеитова»
АУКЦИОН ЗНАНИЙ
Дисциплина: «Основы алгоритмизации и программирование»
Тема: «Форматы графических файлов. Классы для хранения графических объектов TPicture, TBitMap, TIcon»
Группа: 2 основной ВТ-1
Подготовила: Ихсанова А.С.
2015-2016 учебный год
Ф.219
Технологическая карта (план) урока №20
Группа
Дата
2 осн ВТ-1
Дисциплина: Основы алгоритмизации и программирования
Раздел 10 Графика и мультимедиа
Тема курса: Тема курса 10.1 Форматы графических файлов. Компоненты отображения графической информации
Тема урока: №20 Форматы графических файлов. Классы для хранения графических объектов TPicture, TBitMap, TIcon
Тип урока: Комбинированный
Вид урока:Лекция, аукцион знаний
Требования предъявляемые к уровню подготовленности обучающихся
Базовые компетенции
БК 1. Соблюдать технику безопасности и правила пожарной безопасности;
БК 4. Организовать работу с различными источниками информации – находить, обрабатывать, хранить и воспроизводить;
БК 7. Определять наиболее актуальные подходы алгоритмизации и способы решения поставленной задачи.
Профессиональные компетенции
ПК 1. Проводить трансляцию и отладку программы, управлять данными при решении задач;
ПК 2. Осуществлять решение задач из различных областей науки, техники, экономики и производства с применением математических методов и вычислительной техники на всех этапах от постановки до получения результата на ЭВМ;
ПК 3. Составлять тесты и производить тестирование программ.
Цели урока
обучающая
Обучающиеся должны ознакомиться с форматами графических файлов, с классами для хранения графических объектов TPicture, TBitMap, TIcon.
воспитательная
Воспитание информационной культуры учащихся, внимательности, аккуратности, дисциплинированности, усидчивости.
развивающая
Развитие познавательных интересов, навыков работы на компьютере, самоконтроля, умения конспектировать, анализировать.
Межпредметные связи
Обеспечивающие
Дисциплина: Основы алгоритмизации и программирования
Тема курса: Тема курса 9.2 Динамические структуры
Обеспечиваемые
Дисциплина: Основы объектно-ориентированного программирования
Проверка готовности учебной аудитории к учебным занятиям
Проверка готовности обучающихся к учебно-практической деятельности
Проверка отсутствующих, заполнение учебного журнала
Постановка цели и хода урока
2.
Проверка домашнего задания (20 мин)
Итак, сегодня у нас с вами необычный урок. Урок - аукцион. На этом уроке мы с вами повторим и закрепим знания по прошедшим темам. Как известно, на аукцион люди не ходят без денег. У вас в качестве денег будут выступать баллы. Самый высокий балл – 100. Это ваш начальный капитал. Наш аукцион будет проходить следующим образом: я задаю вопрос, а вы делаете ставки за правильный ответ, который можете предоставить. Если ваш ответ правильный, вы получаете столько баллов, сколько поставили, если ответ не правильный - я у вас забираю столько же баллов.
1. Это данные, взаиморасположение и взаимосвязи элементов которых всегда остаются постоянными (Данные статической структуры)
2. Это данные, внутреннее строение которых формируется по какому-либо закону, но количество элементов, их взаиморасположение и взаимосвязи могут динамически изменяться во время выполнения программы, согласно закону формирования (Данные динамической структуры)
3. К данным динамической структуры относят . . . (файлы, несвязанные и связанные динамические данные)
4. Все переменные, объявленные в программе, размещаются в одной непрерывной области оперативной памяти (Сегмент данных)
5. Длина сегмента данных определяется архитектурой микропроцессора и составляет обычно (65536 байт)
6. Это оперативная память ПК, предоставляемая программе при ее работе, за вычетом сегмента данных (64 Кб), стека (16 Кб) и собственно тела программы (Динамическая память)
7. И статические и динамические переменные вызываются как? (По их адресам)
8. Для работы с динамическими переменными в программе должны быть выполнены следующие действия (Выделение памяти под динамическую переменную; Инициализация указателя; Освобождение памяти после использования динамической переменной)
9. Это переменная, которая в качестве своего значения содержит адрес байта памяти (Указатели)
10. Указатель, связанный с некоторым определенным типом данных, называют (типизированным указателем)
11. Указатель, не связанный с каким-либо конкретным типом данных, называется (нетипизированным указателем)
12. Для описания нетипизированного указателя в Паскале существует стандартный тип (pointer)
13. Адрес занимает четыре байта и хранится в виде двух слов, одно из которых определяет сегмент, второе – . . . (смещение)
14. Вся ДП рассматривается как сплошной массив байтов, который называется (кучей)
15. Выделение памяти под динамическую переменную осуществляется процедурой (New)
16. Освобождение динамической памяти осуществляется процедурой (Dispose)
17. Существует единственная константа ссылочного типа ..., которая обозначает «пустой» адрес (nil)
18. Структура данных, каждый элемент которой посредством указателя связывается со следующим элементом (Список)
19. В Паскале существует основное правило: перед использованием какого-либо объекта он должен быть . . . (описан)
20. Особый вид списка, обращение к которому идет только через указатель на первый элемент (Стек)
21. Это вид списка, имеющего два указателя на первый и последний элемент цепочки (Очередь)
22. Для работы с нетипизированными указателями используются Процедуры (GetMem И FreeMem)
3.
Изучение нового материала (40 мин)
Дисциплина: Основы алгоритмизации и программирования
Раздел 10 Графика и мультимедиа
Тема курса: Тема курса 10.1 Форматы графических файлов. Компоненты отображения графической информации
Тема урока: №20 Форматы графических файлов. Классы для хранения графических объектов TPicture, TBitMap, TIcon
1.Форматы графических файлов
2. Классы для хранения графических объектов TPicture, TBitMap, TIcon
4.
Закрепление полученных знаний(10 мин)
1. Для работы с изображениями Delphi предлагает какие классы?
2. Основной класс для связанных с рисованием графических операций — это?
3. К контексту отображения относятся следующие три инструмента?
4. Для перемещения текущего указателя в новую позицию можно использовать метод?
5. Назовите графических компонентов?
5
Подведение итогов урока(6 мин)
6
Постановка домашнего задания (2 мин)
Хомоненко А.Д. «Delphi», стр. 275-278
Преподаватель __________ А.С.Ихсанова
Дисциплина: Основы алгоритмизации и программирования
Раздел 10 Графика и мультимедиа
Тема курса: Тема курса 10.1 Форматы графических файлов. Компоненты отображения графической информации
Тема урока: №20 Форматы графических файлов. Классы для хранения графических объектов TPicture, TBitMap, TIcon
1.Форматы графических файлов
2. Классы для хранения графических объектов TPicture, TBitMap, Ticon
Приложения Windows осуществляют вывод графической информации на экран или принтер с помощью функций GDI (Graphics Devices Interface, интерфейс графических устройств). Сама операционная система Windows является графической средой и для отображения информации также использует функции GDI.
Реализованные GDI-функции являются аппаратно-независимыми. Поэтому при выводе графической информации приложение работает не с физическим, а с логическим устройством, которое характеризуется широкой цветовой палитрой, высоким разрешением и т. п. Приложения взаимодействуют с устройствами вывода посредством драйверов, которые преобразуют аппаратно-независимые функции GDI в команды конкретного устройства.
При выполнении запроса приложения на вывод информации GDI или драйвер корректируют выводимую информацию с учетом ограниченных возможностей и особенностей физического устройства. Например, приложение может указать для цвета геометрической фигуры любой из примерно 16 миллионов цветов (264), однако далеко не любое физическое устройство обладает такими богатыми возможностями отображения цвета. Поэтому фигура будет окрашена в цвет, поддерживаемый конкретным устройством и наиболее близкий к запрошенному. Аналогичные преобразования выполняются для шрифта выводимых символов.
Такой подход позволяет приложению и операционной системе Windows функционировать относительно независимо от особенностей периферийного оборудования. Приложения Windows способны работать на компьютерах практически любой конфигурации, при этом чем лучше будут характеристики аппаратной части, тем больше качество выводимой информации будет соответствовать требованиям приложения.
Взаимодействие приложения с драйвером устройства осуществляется через специальную структуру данных, которая используется функциями GDI. Эта структура называется контекстом отображения (дисплейным контекстом) — DC (Display Context) и содержит основные характеристики устройства вывода, а также инструменты для рисования.
К контексту отображения относятся следующие три инструмента:
шрифт;
перо;
кисть.
Программирование графики в Windows — достаточно сложный и трудоемкий процесс, система Delphi предлагает специальные классы, существенно упрощающие использование графических средств:
TCanvas — для контекста отображения;
TFont — для шрифта;
TPen — для пера;
TBrush — для кисти.
Связанные с этими классами объекты при необходимости создаются автоматически для всех визуальных компонентов. Поэтому у них есть свойства Canvas, Font, Pen, Brush. Перечисленные свойства доступны не у всех визуальных компонентов. Например, у формы Form класса TForm доступны свойства Canvas, Font, Brush, у кнопки Button класса TButton — Font, Brush, у геометрической фигуры Shape класса TShape — Font, Pen, Brush.
Для работы с изображениями Delphi предлагает также классы:
TPicture — контейнер для изображения;
TGraphic — базовый класс для графических объектов-изображений;
TBitmap — растровое изображение;
TIcon — значок;
TMetaFile — метафайл.
Эти классы инкапсулируются другими классами, например, TImage; экземпляры классов можно создавать и использовать программно.
Система Delphi предоставляет возможность рисовать на поверхности компонентов в процессе выполнения приложения и создавать изображения при конструировании приложения. Есть также возможность построения диаграмм.
Основной класс для связанных с рисованием графических операций — это TCanvas. С помощью его свойств и методов можно рисовать на поверхности визуальных объектов, которые включают в себя этот класс и, соответственно, имеют свойство Canvas. К ним относятся, например, такие объекты, как форма Form, надпись Label, графическое изображение Image. Наиболее часто рисование производится на поверхности формы.
Свойство Canvas доступно при выполнении программы, поэтому получаемые с его помощью рисунки являются динамическими и существуют только в процессе работы приложения. При необходимости можно сохранить рисунок в графическом файле или вывести на принтер. Создаваемые при выполнении программы рисунки могут быть неподвижными или анимационными, т. е. изменяющими свои размеры, форму и расположение.
При выполнении различных графических операций используются типы TPoint и TRect, описанные так:
TPoint = record
X: Longint;
Y: Longint;
end;
TRect = record
case Integer of
0: (Left, Top, Right, Bottom: Integer);
1: (TopLeft, BottomRight: TPoint);
end;
Тип TPoint используется для задания координат точки, а тип TRect служит для определения прямоугольной области путем указания координат левого верхнего и правого нижнего углов.
Поверхность рисования представляет собой объект класса TCanvas, иногда его
называют холстом. У холста есть много свойств и методов, позволяющих перемещаться по поверхности рисования, отображать графические примитивы, копировать изображения и их отдельные области, а также выводить текстовую информацию.
Любая поверхность рисования включает в себя объекты "перо" TPen, "кисть" TBrush и "шрифт" TFont. Объекты "перо" и "кисть" используются для прорисовки и заполнения геометрических фигур, а объект "шрифт" позволяет управлять атрибутами текста, выводимого на поверхности.
Отметим, что компонент, имеющий свойство Canvas, в свою очередь сам может содержать объекты "перо", "кисть" и "шрифт" и, соответственно, иметь свойства Pen, Brush и Font. Таким образом, например, свойство шрифта формы Form1.Font не совпадает со свойством шрифта поверхности рисования формы Form1.Canvas.Font. Шрифт формы задает размер символов для элементов управления формы, если у них установлено значение True свойства ParentFont. Шрифт формы можно устанавливать при проектировании приложения или динамически — при его выполнении. Шрифт поверхности рисования формы определяет размер символов текста, отображаемого в форме с помощью класса TCanvas. Шрифт поверхности рисования формы, как объект типа TCanvas, доступен только при выполнении программы.
При выполнении графических операций используется текущий указатель (указатель позиции). Он представляет собой невидимый маркер, определяющий позицию на поверхности рисования, начиная с которой выполняется следующая графическая операция. Текущая позиция определяется горизонтальной (X) и вертикальной (Y) координатами. По умолчанию начало системы координат находится в левом верхнем углу поверхности рисования, а отсчет координат осуществляется в пикселах.
Для перемещения текущего указателя в новую позицию можно использовать метод MoveTo (X, Y: Integer). В результате выполнения этой процедуры перо устанавливается в новую позицию холста с координатами X и Y. При таком перемещении на холсте ничего не рисуется. Положение текущего указателя также изменяют методы, связанные с выводом на холст фигур и текста: при их выполнении текущий указатель остается в позиции, где завершается процесс вывода.
Для рисования геометрических фигур используются следующие методы:
У методов Arc, Chord и Ellipse параметры X1 и Y1 задают координаты левого верхнего угла, а параметры X2 и Y2 — координаты правого нижнего угла прямоугольника, ограничивающего дугу, хорду или эллипс соответственно. Параметры X3 и Y3, X4 и Y4 определяют координаты начальной и конечной точек дуги или хорды.
У методов Rectangle и RoundRect параметры X1 и Y1 задают координаты левого верхнего угла, а параметры X2 и Y2 — координаты правого нижнего угла прорисовываемого прямоугольника.
У методов Polygon и PolyLine параметр Points представляет собой массив с координатами вершин многоугольника.
У метода Pie параметры X1, Y1, X2, Y2 задают координаты ограничивающего фигуру прямоугольника, а параметры X3 и Y3, X4 и Y4 определяют координаты первой и второй линий радиуса соответственно.
Параметры линий фигур и их заполнение определяют текущие значения свойств пера и кисти поверхности рисования.
Рассмотрим пример рисования на поверхности формы с использованием свойства Canvas. Выполним вывод на поверхность формы изображения пейзажа (рис.1), который создадим из эллипсов и прямоугольников. Цвет и заливка (заполнение) будут устанавливаться с помощью свойств объектов "кисть" и "перо".
В листинге 1 приведен исходный код модуля, реализующего вывод изображения.
При конструировании формы для создания визуальных эффектов и изображений можно использовать соответствующие компоненты. Действия, связанные с построением изображения, напоминают работу в среде графического редактора.
Подобным образом можно создавать относительно простые визуальные эффекты, такие как отображение рамок, фасок или элементарных геометрических фигур. Это связано с тем, что набор компонентов, из которых конструируется изображение, невелик, а возможности этих компонентов ограниченны.
Наиболее часто используются такие графические компоненты, как геометрическая фигура (Shape), фаска (Bevel), графическое изображение (Image).
Графические элементы являются неоконными визуальными компонентами и происходят от класса TGraphicControl.
Компонент Shape
Для отображения геометрических фигур служит компонент Shape типа TShape, который расположен на странице Additional Палитры инструментов.
Вид фигуры (рис. 2), отображаемой этим компонентом, определяется одноименным свойством Shape типа TShapeType, принимающим следующие значения:
stCircle — круг;
stEllipse — эллипс;
stRectangle — прямоугольник;
stRoundRect — прямоугольник со скругленными углами;
stRoundSquare — квадрат со скругленными углами;
stSquare — квадрат.
Управление цветом и заполнением фигуры выполняется с помощью свойств Pen и Brush.
Рис. 2. Фигуры, отображаемые компонентом Shape
Компонент Bevel
Фаски представляют собой прямоугольные области, рамки и линии. Они имеют плоский или объемный вид и обычно используются для визуального выделения других элементов формы с целью более наглядного их восприятия. Для работы с фаской служит компонент Bevel, который расположен на странице Additional Палитры инструментов.
Фигура (рис. 3), используемая для фаски, задается свойством Shape типа TBevelShape, принимающим следующие значения:
bsBottomLine — линия снизу;
bsBox — прямоугольник;
bsFrame — рамка;
bsLeftLine — линия слева;
bsRightLine — линия справа;
bsSpacer — прямоугольная область, невидимая при выполнении программы;
bsTopLine — линия сверху.
Рис. 3. Виды фасок, отображаемых компонентом Bevel
Свойство Style типа TBevelStyle определяет стиль фаски и принимает следующие значения:
bsLowered — фаска выглядит утопленной относительно поверхности размещения; по умолчанию;
bsRaised — фаска выглядит приподнятой относительно поверхности размещения.
Компонент Image
В Delphi компонент Image типа TImage служит для показа изображения определенного графического формата. Он обычно помещается на поверхность формы и представляет собой невидимый контейнер для размещения реального изображения.
Компонент Image включает в себя класс TPicture, который, в свою очередь, имеет свойства и методы, используемые для работы с готовыми изображениями. Основным свойством этого компонента является свойство Picture.
С его помощью можно, например, загрузить изображение.
Свойство Picture типа TPicture определяет изображение, размещаемое внутри компонента Image.
Объект типа TPicture является контейнером для графических объектов и может содержать растровое изображение форматов BMP, ICO или WMF. Для этого он включает в себя классы TBitmap, TIcon и TMetaFile. Графическое изображение, загруженное в объект типа TPicture, определяется свойством Graphic типа TGraphic. Это свойство можно использовать для доступа к изображениям любого из указанных типов, если он не известен. Если тип графики известен, то для операций с ней можно использовать свойства Bitmap типа TBitmap, Icon типа TIcon и MetaFile типа TMetaFile.
Свойства Height и Width типа Integer определяют соответственно высоту и ширину загруженного в объект типа TPicture изображения. Отметим, что значения этих свойств в общем случае не равны значениям одноименных свойств компонента Image, задающих размеры самого компонента Image: они совпадут только в случае, если изображение, загруженное в компонент Image с помощью свойства Picture, займет его полностью.
В объект типа TPicture изображение может загружаться из следующих источников:
графический файл;
компонент, содержащий изображение, например, Image;
файл ресурса.
Изображение из графического файла можно загружать на этапе проектирования приложения (статически) и при его выполнении (динамически). Следует учитывать, что изображение, подключенное при проектировании приложения, соответственно увеличивает объем исполняемого файла программы.
Чтобы избежать этого, рекомендуется загружать большие изображения динамически.
Для загрузки изображения из файла в классе TPicture имеется метод LoadFromFile (const FileName: String), параметр FileName которого указывает графический файл-источник изображения. Данная процедура способна работать с файлами форматов BMP, WMF, ICO.
загружает изображение из файла c:\picture\photo1.bmp в компонент Image1.
При загрузке изображения из содержащего его компонента для класса TPicture необходимо использовать свойство, указывающее тип графики в объекте-источнике.
Например, инструкция Image2.Picture.Bitmap.Assign(Image1.Picture.Bitmap);
копирует изображение типа TBitmap из компонента Image1 в компонент Image2.
Загрузка изображения из файла ресурсов для объекта Bitmap выполняется посредством метода LoadFromResourceName (Instance: THandle; const ResName: String). Файл ресурса (RES) может быть подготовлен с помощью любого редактора ресурсов. Перед использованием файл ресурса следует подключить к модулю директивой компилятора $R.
В компонент Image1 загружается изображение с именем picture1, содержащееся в файле ресурса resource1.res. Имя ресурса, в данном случае picture1, задается в редакторе ресурсов при создании изображения.
При необходимости сохранение изображения, содержащегося в компоненте, можно выполнить с помощью метода SaveToFile класса TPicture. Процедура SaveToFile (const FileName: String) сохраняет изображение, находящееся в контейнере Picture, на диске в файле с именем, заданным параметром FileName.
У компонента Image есть свойство Canvas, поэтому на его поверхности разрешается рисовать даже поверх уже находящегося на нем изображения. Так можно, например, оформить рамку вокруг рисунка или добавить к нему поясняющий текст.
Как отмечалось, размеры компонента Image и содержащегося в нем изображения (загруженного с помощью свойства Picture) в общем случае не совпадают. При этом возможна ситуация, когда изображение не помещается в области компонента Image. Для просмотра таких изображений можно использовать свойства AutoSize или Stretch компонента Image.
Свойство AutoSize типа Boolean управляет возможностью автоматического приведения размеров компонента Image к размерам содержащегося в нем изображения. Если свойство AutoSize установлено в значение True, то размеры элемента Image приводятся к размерам изображения, если в значение False (по умолчанию), то нет.
Свойство Stretch типа Boolean управляет возможностью автоматического приведения размеров изображения к размерам компонента Image, в котором оно содержится. Если свойство Stretch установлено в значение True, то размеры изображения приводятся к размерам компонента Image, если в значение False (по умолчанию), то размеры изображения не изменяются. Для значков это свойство не действует, они загружаются с исходными размерами.
При приведении размеров изображения к размерам компонента Image возможно нарушение пропорций изображения по высоте и ширине. Задав значение True для свойства Proportional типа Boolean, можно обеспечить сохранение пропорций изображения.
Если размеры изображения больше, чем размеры компонента Image, а свойства AutoSize и Stretch установлены в значение False, то часть изображения отсекается. Для обеспечения просмотра всего изображения, независимо от размеров области компонента, можно применять указанные далее приемы.
Установить значение True для свойства Stretch. При выводе изображения значительных размеров происходит сильная потеря качества рисунка из-за масштабирования. Поэтому такой способ используют, если качество отображения не играет существенной роли, например, в области предварительного просмотра открываемых графических файлов (как в компоненте OpenPictureDialog1).
Установить значение True для свойства AutoSize. При этом потеря качества рисунка не происходит, т. к. размеры компонента Image подстраиваются под изображение, а не наоборот. Однако часто размеры компонента Image устанавливаются при разработке или имеют определенные пределы, связанные с дизайном формы, и изменять эти размеры нежелательно. В этом случае можно организовать прокрутку изображения. Для этого компонент Image помещают в контейнер (например, панель Panel), который ограничивает видимую область этого компонента. Перемещение видимой области осуществляется путем изменения значений свойств Left и Top компонента Image.
Свойство Center типа Boolean определяет, центрируется ли изображение внутри компонента Image. Если свойство установлено в значение True, то изображение центрируется, если свойство имеет значение False (по умолчанию), то изображение выравнивается по левому верхнему углу компонента Image.
Для работы с картинками в формате JPEG предназначен класс TJPEGImage. Для использования этого класса и предоставляемых им возможностей в разделе uses следует подключить модуль JPEG.
Компонент PaintBox
Окно рисования (мольберт) представляет собой прямоугольную область, внутри которой можно выполнять операции рисования. Для работы с окном рисования служит компонент PaintBox (расположен на странице System Палитры компонентов), основным свойством которого является свойство Canvas типа TCanvas. Окно рисования обычно используется, когда нужно ограничить поверхность рисования областью, размер которой меньше размера этой поверхности, а также для рисования на поверхности компонентов, не обладающих свойством Canvas.
Сам компонент PaintBox является невидимым, отображается только выводимое на нем изображение. В отличие от компонента Image, в компонент PaintBox нельзя загружать готовые изображения.
Компонент ImageList
Компонент ImageList (список графических изображений) предназначен для хранения набора графических изображений. Список представляет собой коллекцию однотипных изображений одинакового размера, на каждое из которых можно ссылаться по индексу. Списки изображений используются для эффективного управления множествами значков или битовых массивов. Сам список является невизуальным компонентом и на экране не отображается, содержащиеся в нем изображения также являются невидимыми. Видимыми они становятся только при отображении их каким-либо способом на поверхности какого-либо визуального компонента. Списки изображений удобно использовать для запоминания различного числа рисунков, которые при необходимости можно быстро отобразить.
В Delphi список графических изображений представлен компонентом ImageList (расположен на странице Win32 Палитры компонентов), производным от класса TCustomImageList и являющимся контейнером для хранения нескольких изображений одинакового типа и размера. Свойства компонента ImageList определяют его характеристики и характеристики содержащихся в нем изображений, а методы позволяют оперировать ими. Элементами списка могут быть изображения типа "значок" (ICO) или "битовый массив" (BMP).
Кроме того, в списке могут храниться маски изображений, которые определяют способ отображения при прорисовке. Размеры маски совпадают с размерами изображения. Нулевой бит маски указывает, что в этом месте изображения при его выводе на какой-либо поверхности будет нарисован бит с цветом фона. Ненулевой бит маски делает возможным вывод на прорисовываемой поверхности соответствующего ему бита изображения.
Элементы списка ImageList используются, например, для рисунков на кнопках ToolButton панели инструментов ToolBar или на ярлычках многостраничного блокнота PageControl. Эти компоненты имеют специальное свойство, его значение указывает имя списка графических изображений, из которого берутся рисунки. Таким свойством является, например, свойство Images типа TCustomImageList. Чтобы определить, какое именно изображение из заданного списка выводится в конкретном элементе, данный элемент имеет свойство, указывающее номер "своего" изображения. В частности, для кнопки
ToolButton это свойство ImageIndex типа Integer.
Рисунок, выводимый на поверхности элемента, может зависеть от состояния этого элемента, например, вид глифа (от англ. glyph) на кнопке панели инструментов зависит от того, активна кнопка или заблокирована. Если для элемента используются несколько рисунков, то они берутся из различных списков, указанных соответствующими свойствами того компонента, которому эти элементы принадлежат. Так, для панели инструментов ToolBar свойства Images, HotImages и DisableImages могут задавать три различных контейнера для изображений, которые отображаются на кнопках ToolButton в зависимости от их состояния.
Для компонентов, у которых нет свойства, указывающего список графических изображений, но которые требуют отображения в своей области рисунков из списка, программист самостоятельно выполняет вывод графики с помощью класса TCanvas и списка ImageList.
Для работы с компонентом ImageList на этапе проектирования используется редактор (рис. 4), с помощью которого можно добавить в контейнер изображение или удалить его. Каждое изображение в компоненте ImageList имеет свой номер, отсчет начинается с нуля. Редактор позволяет перемещать отдельные изображения, изменяя их положения и, соответственно, их номера в контейнере. Кроме того, для отдельных изображений можно установить значения некоторых свойств, например, прозрачный (фоновый) цвет. Для каждого изображения может создаваться и запоминаться маска.
Обычно при проектировании приложения в список графических изображений только загружается набор рисунков, а все остальные действия с этим списком реализуются при выполнении приложения.
Все хранимые в списке изображения имеют одинаковый размер. По умолчанию он составляет 16×16 пикселов и устанавливается при создании компонента ImageList. При необходимости можно динамически установить новый размер. Для этого используется конструктор CreateSize (AWidth, AHeight: Integer), в котором параметры AWidth и AHeight задают ширину и высоту изображения в пикселах.
Рис. 4. Редактор компонента ImageList
Изменить размеры изображений в списке ImageList можно также, установив значения свойств Width и Height типа Integer, которые определяют ширину и высоту изображения и доступны для записи.
Компонент Animate
Компонент Animate позволяет проигрывать AVI-файлы, а также отображать стандартную анимацию, используемую Windows. Однако AVI-файлы, воспроизводимые этим компонентом, имеют определенные ограничения:
они не должны содержать звука;
информация в них должна быть не сжатой;
размер файла не должен превышать 64 Кбайт.
Для задания воспроизводимого видеоклипа используются свойства FileName типа TFileName и CommonAVI типа TCommonAVI. Одновременно можно применять одно из этих свойств: так, если в качестве значения свойства FileName указывается AVI-файл, существующий на диске, то свойство CommonAVI автоматически устанавливается в значение aviNone. Свойство CommonAVI позволяет выбрать один из стандартных клипов Windows, обеспечиваемых в Shell32.dll, и принимает следующие значения:
aviNone — отсутствие стандартной анимации;
aviCopyFile — копирование файла;
aviCopyFiles — копирование файлов;
aviDeleteFile — удаление файла;
aviEmptyRecycle — очистка Корзины;
aviFindComputer — поиск компьютера;
aviFindFile — поиск файла;
aviFindFolder — поиск папки;
aviRecycleFile — перемещение файла в Корзину.
При установке свойству CommonAVI отличного от aviNone значения свойство FileName автоматически сбрасывается, принимая значение пустой строки.
Для задания видеоклипа также можно использовать свойства ResHandle типа THandle и ResID типа Integer, представляющие собой альтернативы свойствам CommonAVI и FileName. Значение свойства ResHandle задает ссылку на модуль, который содержит изображение в виде ресурса, а значение свойства ResID указывает номер ресурса в этом модуле. В случае успешной загрузки видео-клипа из ресурса свойству CommonAVI автоматически устанавливается значение aviNone, а значение свойства FileName сбрасывается в пустую строку.
После выбора видеоклипа свойства FrameCount, FrameHeight и FrameWidth типа Integer определяют число кадров, а также высоту и ширину кадров (в пикселах) соответственно. Все эти свойства доступны только для чтения во время выполнения программы.
По умолчанию размеры компонента Animate автоматически подстраиваются под размеры кадров видеоклипа, это определяет значение True свойства AutoSize типа Boolean. Если этому свойству установить значение False, то компонент Animate свои размеры не изменяет, при этом возможно отсечение части кадра изображения, если его размеры превышают размеры компонента Animate.
Воспроизведение видеоклипа начинается при установке свойству Active типа Boolean значения True. Начальный и конечный кадры задают диапазон воспроизведения и определяются, соответственно, значениями свойств StartFrame и StopFrame типа SmallInt. По умолчанию свойство StartFrame указывает на первый кадр анимации и имеет значение 1, а свойство StartFrame — на последний кадр, и его значение равно значению свойства FrameCount.
Свойство Repetitions типа Integer определяет число повторений воспроизведения видеоклипа. По умолчанию оно имеет значение 0, и видеоклип проигрывается неограниченное число раз до тех пор, пока процесс воспроизведения не будет остановлен.
Для принудительной (до истечения заданного числа повторений) остановки воспроизведения видеоклипа свойству Active следует установить значение False.
Свойство Center типа Boolean задает, будет ли изображение выводиться в центре компонента Animate или в его левом верхнем углу. По умолчанию это свойство имеет значение True, и видеоклип проигрывается в центре области компонента Animate.
Для запуска и остановки воспроизведения клипов можно использовать также методы Play, Stop и Reset. Процедура Play (FromFrame, ToFrame: Word; Count: Integer) проигрывает видеоклип, начиная с кадра, заданного параметром FromFrame, и заканчивая кадром, заданным параметром ToFrame. Параметр Count определяет число повторений. Таким образом, эта процедура позволяет одновременно управлять свойствами StartFrame, StopFrame и Repetitions, задавая для них требуемые при воспроизведении значения, а также устанавливает свойству Active значение True.
Процедура Stop прерывает воспроизведение видеоклипа и устанавливает свойству Active значение False. Процедура Reset, кроме того, дополнительно сбрасывает свойства StartFrame и StopFrame, устанавливая для них значения по умолчанию.
Свойство Open типа Boolean доступно при выполнении программы и позволяет определить, готов ли компонент Animate к воспроизведению. Если выбор и загрузка видеоклипа проходят успешно, свойство Open автоматически принимает значение True, и компонент Animate можно открыть — проиграть анимацию. Если загрузить видеоклип не удается, то это свойство получает значение False. При необходимости программист может сам устанавливать свойству Open значение False, отключая этим компонент Animate.
Рассмотрим пример анимации часов на форме приложения с помощью просмотра файла clock.avi (рис. 5).
Управление запуском анимации часов в приложении выполняется с помощью двух обработчиков событий Click для кнопок:
procedure TForm3.Button1Click(Sender: TObject);
begin
Animate1.FileName:='c:\winnt\clock.avi';
Animate1.Active :=True;
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
Animate1.Active :=False;
end;
В приведенном примере звук отсутствует.
Рис. 5. Анимация часов
Как говорилось, компонент Animate обеспечивает воспроизведение только простых AVI-файлов. Для проигрывания больших файлов предназначен компонент MediaPlayer, предоставляющий гораздо более богатые мультимедийные возможности.
Часто компонент Animate используется при создании панелей инструментов ToolBar или CoolBar для добавления в них анимационных значков, которые оживляют форму и служат для индикации того, что программа выполняет ту или иную обработку данных. Воспроизведение изображения при этом осуществляется, например, при нажатии кнопки панели инструментов или по истечении заданного интервала времени.
АУКЦИОН ЗНАНИЙ
Итак, сегодня у нас с вами необычный урок. Урок - аукцион. На этом уроке мы с вами повторим и закрепим знания по прошедшим темам. Как известно, на аукцион люди не ходят без денег. У вас в качестве денег будут выступать баллы. Самый высокий балл – 100. Это ваш начальный капитал. Наш аукцион будет проходить следующим образом: я задаю вопрос, а вы делаете ставки за правильный ответ, который можете предоставить. Если ваш ответ правильный, вы получаете столько баллов, сколько поставили, если ответ не правильный - я у вас забираю столько же баллов.
1. Это данные, взаиморасположение и взаимосвязи элементов которых всегда остаются постоянными (Данные статической структуры)
2. Это данные, внутреннее строение которых формируется по какому-либо закону, но количество элементов, их взаиморасположение и взаимосвязи могут динамически изменяться во время выполнения программы, согласно закону формирования (Данные динамической структуры)
3. К данным динамической структуры относят . . . (файлы, несвязанные и связанные динамические данные)
4. Все переменные, объявленные в программе, размещаются в одной непрерывной области оперативной памяти (Сегмент данных)
5. Длина сегмента данных определяется архитектурой микропроцессора и составляет обычно (65536 байт)
6. Это оперативная память ПК, предоставляемая программе при ее работе, за вычетом сегмента данных (64 Кб), стека (16 Кб) и собственно тела программы (Динамическая память)
7. И статические и динамические переменные вызываются как? (По их адресам)
8. Для работы с динамическими переменными в программе должны быть выполнены следующие действия (Выделение памяти под динамическую переменную; Инициализация указателя; Освобождение памяти после использования динамической переменной)
9. Это переменная, которая в качестве своего значения содержит адрес байта памяти (Указатели)
10. Указатель, связанный с некоторым определенным типом данных, называют (типизированным указателем)
11. Указатель, не связанный с каким-либо конкретным типом данных, называется (нетипизированным указателем)
12. Для описания нетипизированного указателя в Паскале существует стандартный тип (pointer)
13. Адрес занимает четыре байта и хранится в виде двух слов, одно из которых определяет сегмент, второе – . . . (смещение)
14. Вся ДП рассматривается как сплошной массив байтов, который называется (кучей)
15. Выделение памяти под динамическую переменную осуществляется процедурой (New)
16. Освобождение динамической памяти осуществляется процедурой (Dispose)
17. Существует единственная константа ссылочного типа ..., которая обозначает «пустой» адрес (nil)
18. Структура данных, каждый элемент которой посредством указателя связывается со следующим элементом (Список)
19. В Паскале существует основное правило: перед использованием какого-либо объекта он должен быть . . . (описан)
20. Особый вид списка, обращение к которому идет только через указатель на первый элемент (Стек)
21. Это вид списка, имеющего два указателя на первый и последний элемент цепочки (Очередь)
22. Для работы с нетипизированными указателями используются Процедуры (GetMem И FreeMem)