4620
Графические возможности Delphi: Программирование средств мультимедиа
Практическая работа
Информатика, кибернетика и программирование
Цель работы: изучение классов и компонент Delphi, предназначенных для создания изображений привитие практических навыков программирования простых мультимедиа приложений в визуальной интегрированной среде разработки Delphi. Содержание работы: Соз...
Русский
2012-11-23
301.93 KB
146 чел.
Содержание работы:
1. Создание простейших приложений.
2. Проигрывание видеофайлов.
Требования к отчету:
Отчет по работе должен содержать:
В Delphi имеется несколько классов общего назначения, позволяющих выводить графические изображения на поверхность компонентов. К ним относятся классы: TFont (шрифт), ТРеn (карандаш), TBrush (кисть) и TCanvas (канва).
В составе многих компонентов Delphi имеются свойства Font, Pen, Brush и Canvas соответствующего типа, при помощи которых создаются изображения любых рисунков и текстов. Предком классов TFont, TPen и TBrush является класс TGraphicsObject, происходящий непосредственно от класса TPersistent. Предком класса TCanvas является класс TPersistent.
При изменении графического объекта возникает событие OnChange:
property OnChange: TNotifyEvent;
После возникновения этого события графические объекты отображаются с обновленными значениями своих свойств.
В Delphi имеются компоненты, специально предназначенные для создания графических изображений:
Компонент TTimer (), который предназначен для отсчета интервалов реального времени. Он не предназначен для создания графических изображений и является вспомогательным компонентом. Нами он будет использован при создании проектов, содержащих графически компоненты.
Класс TFont определяет характеристики шрифта и свойства, имеющие этот классовый тип, присутствуют в любом компоненте, который может содержать некоторый текст. Характеристики шрифта в классе TFont задаются при помощи следующих свойств:
type TFontCharset = 0..255;
property Charset: TFontCharset nodefault;
Определяет набор символов шрифта. Ниже перечислены некоторые константы, которые могут быть использованы в качестве значения свойства Charset:
Константа |
Значение |
Описание |
ANSI_CHARSET |
0 |
Символы ANSI |
DEFAULT_CHARSET |
1 |
Задается по умолчанию. Шрифт выбирается только по его имени Name и размеру Size. Если описанный шрифт недоступен в системе, Windows заменит его другим шрифтом |
SYMBOL_CHARSET |
2 |
Стандартный набор символов |
MAC_CHARSET |
77 |
Символы Macintosh |
GREEK_CHARSET |
161 |
Греческие символы |
RUSSIAN_CHARSET |
204 |
Символы кириллицы |
OEM_CHARSET |
255 |
Определяется кодовой таблицей операционной системы |
property Color: TColor;
Определяет цвет символов.
property Height: Integer;
Устанавливает высоту шрифта в пикселях
type TFontName = type string;
property Name: TFontName;
Задает имя шрифта.
type TFontPitch = (fpDefauIt, fpVariable, fpFixed);
property Pitch: TFontPitch;
Задает ширину шрифта и может принимать следующие значения:
property Size: Integer;
Задает высоту шрифта в пунктах (1 пункт = 1/72 дюйма).
type TFontStyle = (fsBold, fsltalic, fsUnderline, fsStrikeOut);
TFontStyles = set of TFontStyle;
property Style: TFontStyles;
Задает тип шрифта и в качестве значения может принимать любое множество следующих величин:
Следует иметь в виду, что тексты в Delphi пишутся только горизонтально.
Компонент TImage
Страница Палитры Компонентов: Additional ()
Иерархия:
TObject→TPersistent→TComponent→TControl→TGraphicControl
Компонент класса TImage используется для размещения на форме некоторой картинки. Файл изображения может быть битовой картой (файл с расширением .bmp), пиктограммой (файл с расширением .iсо), метафайлом (файл с расширением .wmf).
Класс TImage является непосредственным потомком класса TGraphicControl и, следовательно, принадлежит к семейству графических элементов управления.
Основные свойства:
property Canvas: TCanvas;
Предназначается для формирования изображения на этапе выполнения программы.
property Center: Boolean;
Если свойство имеет значение Тruе, изображение выравнивается по центру компонента, в противном случае изображение помещается в левом верхнем углу компонента. По умолчанию имеет значение False.
property Picture: TPicture;
Свойство классового типа TPicture - определяет изображение, помещенное в компоненте.
property Stretch: Boolean;
Если свойство имеет значение True, изображение определяемое свойством Picture, увеличивается или уменьшается до размеров компонента. По умолчанию имеет значение False.
Как и другие графические элементы управления, компонент TImage обрабатывает все события от мыши. События по умолчанию не имеет.
При помещении изображения в компонент TImage на этапе проектирования можно использовать окно задания изображения. Это окно раскрывается при активизации компонента либо при выборе свойства Picture в Инспекторе Объектов. Основное поле окна задания изображения предназначено для размещения выбранной картинки. Кроме этого, в окне имеются следующие кнопки:
Компонент TTimer
Компонент TTimer предназначен для отсчета интервалов реального времени. Он не предназначен для создания графических изображений и является вспомогательным компонентом.
Страница Палитры Компонентов: System ()
Иерархия:
TObject→TPersistent→TComponent
Таймер класса TTimer является невизуальным компонентом, и его можно отнести к разряду вспомогательных компонентов. Таймер предназначен для инициирования какой-либо операции через заданные промежутки времени.
Основные свойства:
property Enabled: Boolean;
Если свойство имеет значение True, то таймер реагирует на собственное событие OnTimer.
property Interval: Cardinal;
Определяет временной интервал в миллисекундах, после которого появляется событие OnTimer. По умолчанию равно 1000 (1 секунда).
Кроме того, в классе TTimer определено событие OnTimer:
property OnTimer: TNotifyEvent;
Возникает периодически по истечении интервала времени, определяемого свойством Interval. Оно является событием, используемым по умолчанию.
Класс ТРеn задает характеристики карандаша, при помощи которого создаются изображения различных линий либо контуров.
Основные свойства:
property Color: TColor;
Определяет цвет линии, рисуемой карандашом. По умолчанию цвет черный.
type TPenMode = (pmBlack, pmWhite, pmNop, pmNot, pmCopy, pmNotCopy, pmMergePenNot, pmMaskPenNot, pmMergeNotPen, pmMaskNotPen, pmMerge, pmNotMerge, pmMask, pmNotMask, pmXor, pmNotXor);
property Mode: TPenMode;
Определяет стиль рисования линий карандашом. Может принимать следующие значения:
pmBlack - всегда изображается черная линия;
pmWhite - всегда изображается белая линия;
pmNop - бесцветная линия;
pmNot - цвет, инверсный цвету экрана;
pmCopy - цвет определяется значением свойства Color;
pmNotCopy - цвет, инверсный цвету, заданному в свойстве Color;
pmMergePenNot - комбинация цвета Color и инверсного цвета экрана;
pmMaskPenNot - комбинация цветов, общих у Color и инверсного цвета экрана;
pmMergeNotPen - комбинация цвета экрана и инверсного цвета Color;
pmMaskNotPen - комбинация цветов, общих у цвета экрана и инверсного цвета и Color;
pmMerge - комбинация цветов экрана и Color;
pmNotMerge - цвет, инверсный комбинации цветов экрана и Color;
pmMask - комбинация цветов, общих у экрана и Color;
pmNotMask - цвет инверсный комбинации цветов, общих у экрана и Color;
pmXor - комбинация цветов, присутствующих у цвета экрана или Color, но не одновременно у обоих;
pmNotXor - цвет, инверсный комбинации цветов, присутствующих у цвета экрана или Color, но не одновременно у обоих.
По умолчанию цвет линии определяется свойством Color.
type TPenStyle = (psSolid, psDash, psDot, psDashDot, psDashDotDot, psClear, psInsideFrame);
property Style: TPenStyle;
Определяет стиль линии, рисуемой карандашом. Может принимать следующие значения:
psSolid - сплошная линия (значение по умолчанию),
psDash - штриховая линия,
psDot - пунктирная линия,
psDashDot - штрихпунктирная линия,
psDashDotDot - штрихпунктирная линия с двумя пунктирами,
psClear - невидимая линия,
psInsideFrame - линия внутри замкнутой рамки.
property Width: Integer;
Определяет толщину рисуемой линии. Значением по умолчанию является толщина, равная 1 пикселю.
Класс TBrush содержит определение характеристик кисти, которая используется для заливки (закраски) замкнутых областей.
Основные свойства:
property Bitmap: TBitmap;
Bitmap указывает на объект типа TBitmap, содержащий побитовое отображение изображения, размером 8x8 пикселей. Если Bitmap не пустой, то шаблон заполнения определяется именно им, а не свойством Style. В противном случае свойство должно иметь значение nil.
property Color: TColor;
Определяет цвет кисти. Значением по умолчанию является белый цвет.
type TBrushStyle = (bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal, bsBDiagonal, bsCross, bsDiagCross);
property Style.TBrushStyle;
Определяет орнамент кисти. Может принимать следующие значения:
bsSolid - сплошная раскраска,
bsClear - отсутствие раскраски,
bsHorizontal - горизонтальные линии,
bsVertical - вертикальные линии,
bsFDiagonal - левые диагональные линии,
bsBDiagonal - правые диагональные линии,
bsCross - клетка,
bsDiagCross - косая клетка.
Компонент Shape
Страница Палитры Компонентов: Additional ()
Иерархия:
TObject→TPersistent→TComponent→TControl→TGraphicControl
Экземплярами класса TShape являются компоненты-фигуры: круги, эллипсы, прямоугольники и т.п. Эти фигуры могут быть использованы для стилизации вашего приложения.
Класс TShape является непосредственным потомком класса TGraphicControl и так же, как и класс TImage, входит в семейство графических элементов управления.
Основные свойства:
property Brush: TBrush;
Определяет кисть для закрашивания поверхности фигуры.
property Pen: TPen;
Определяет карандаш для рисования контура фигуры.
Type TShapeType = (stRectangle, stSquare, stRoundRect, stRoundSquare, stEllipse, stCircle);
property Shape: TShapeType;
Определяет фигуру, выводимую на экран:
stRectangle - прямоугольник,
stSquare - квадрат,
stRoundRect - прямоугольник с закругленными краями,
stRoundSquare - квадрат с закругленными краями,
stEllipse - эллипс,
stCircle - круг.
Событием по умолчанию для компонента Shape является событие OnDragDrop.
Создайте заставку для приложения.
Заставка представляет собой графическое изображение, появляющееся на несколько секунд после запуска программы Заставка может создаваться в графическом редакторе как файл с расширением .bmp.
Рис. 1. Создание заставки в графическом приложении
Для того, чтобы выбрать цвет символов, следует подвести курсор мыши к окну с требуемым цветом в палитре цветов и нажать левую клавишу. При нажатой правой клавише мыши выбранный цвет будет использоваться в качестве цвета фона.
После выбора цвета для символов и фона следует выполнить команды Edit Select All и Edit Cut для очистки рисунка. После этого вставить приведенный выше текст.
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Image1.Free;
Timer1.Free;
end;
Рис. 2. Вид формы
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Image1.Visible=True then
begin
Timer1.Interval:=8000; Image1.Hide;
end
else
begin
Timer1.Interval:=2000; Image1.Show;
end;
end;
Создать приложение, демонстрирующего вращение Луны вокруг Земли.
Форма будет иметь вид, показанный на рис. 3.
procedure TForm1.Timer1Timer(Sender: TObject);
begin
x:=x+0.1;
Shape2.Left:=265+trunc(150*cos(x));
Shape2.Top:=150-trunc(150*sin(x));
end;
Рис. 3. Вид формы, моделирующей вращение Луны вокруг Земли
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
вставьте описание:
var
x: real;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
x:=x+0.1;
Shape2.Left:=265+trunc(150*cos(x));
Shape2.Top:=150-trunc(150*sin(x));
end;
вставьте следующее:
begin
x:=0;
Создайте приложение, содержащее круговую диаграмму.
procedure TForm1.PaintBox1Paint(Sender: TObject);
procedure sector(clr:TColor;angle1,angle2:real;msg:string);
Var x1,x2,y1,y2:integer;
begin
PaintBox1.Canvas.Brush.Color:=clr;
x1:=trunc(cos(angle1)*PaintBox1.Width/2+PaintBox1.Width/2);
y1:=PaintBox1.Height - trunc(sin(angle1)*PaintBox1.Height/2+PaintBox1.Height/2);
x2:=trunc(cos(angle2)*PaintBox1.Width/2+PaintBox1.Width/2);
y2:=PaintBox1.Height-trunc(sin(angle2)*PaintBox1.Height/2+PaintBox1.Height/2);
PaintBox1.Canvas.Pie(0,0,PaintBox1.Width,
PaintBox1.Height,x1,y1,x2,y2);
PaintBox1.Font.Name:='Arial';
PaintBox1.Font.Size:=8;
PaintBox1.Font.Color:=clBlack;
PaintBox1.Font.Style:=[fsBold];
PaintBox1.Canvas.TextOut(trunc((x1+x2)/2-20),trunc((y1+y2)/2),msg);
end;
begin
sector(clRed,0,pi/3,'16,5%');
sector(clWhite,pi/3,5*pi/6,'25%');
sector(clBlue,5*pi/6,7*pi/5,'28,4%');
sector(clYellow,7*pi/5,2*pi,'30%');
end;
Для рисования сектора круга в этом обработчике определена процедура sector с параметрами:
Рис. 4. Результат работы программы, изображающей круговую диаграмму
В Delphi имеется компонент TMediaPlayer , расположенный на странице System, универсальный проигрыватель аудио- и видео- информации.
Компонент можно использовать в двух режимах. Во-первых, можно предоставить пользователю возможность управлять воспроизведением информации с помощью кнопочного интерфейса, напоминающего панель управления различными проигрывателями. Во-вторых, можно сделать сам компонент невидимым и управлять воспроизведением информации с помощью его методов.
Пользовательский интерфейс медиаплейера имеет ряд кнопок, управляемых мышью или клавишей пробела и клавишами со стрелками.
Каждой кнопке медиаплейера соответствует метод, осуществляющий по умолчанию требуемую операцию: Play, Pause, Stop, Next, Previous, Step, Back, StartRecording, Eject.
Тип устройства мультимедиа, с которым работает медиаплейер, определяется его свойством DeviceType. Если устройство мультимедиа хранит объект воспроизведения в файле, то имя файла задается свойством FileName. По умолчанию свойство DeviceType имеет значение dtAutoSelect. Это означает, что медиаплейер пытается определить тип устройства, исходя из расширения имени файла FileName.
Еще одно свойство MediaPlayer AutoOpen. Если оно установлено в true, то медиа-плейер пытается открыть устройство, указанное свойством DeviceType, автоматически во время своего создания в процессе выполнения приложения.
Воспроизведение видеоинформации по умолчанию производится в окно, которое создает само открытое устройство мультимедиа. Однако это можно изменить, если в свойстве Display указать оконный элемент, в котором должно отображаться изображение. Это может быть, например, форма или панель. Можно также задать в свойстве DisplayRect типа TRect (свойство только времени выполнения) прямоугольную область этого окна, в которую должно выводиться изображение. Для задания свойства DisplayRect можно использовать функцию Rect.
Свойства Notify и Wait действуют только на один очередной метод. Поэтому их значения надо каждый раз восстанавливать в обработчиках событий OnClick или OnNotify.
В обработчиках событий можно читать свойство Mode, характеризующее текущее состояние устройства мультимедиа. Можно также читать и устанавливать ряд свойств, характеризующих размер воспроизводимого файла и текущую позицию в нем.
Компоненты TOpenDialog () диалог «Открыть файл» и ТSaveDialog (
) диалог «Сохранить файл как...», расположенные на странице Dialogs, используются чаще всего, в большинстве приложений (рис. 5).
Все свойства этих компонентов одинаковы, только их смысл несколько различен для открытия и закрытия файлов. Основное свойство, в котором возвращается в виде строки выбранный пользователем файл, FileName. Значение этого свойства можно задать и перед обращением к диалогу. Тогда оно появится в диалоге как значение по умолчанию в окне Имя файла.
Рис. 5. Стандартные окна Открытия и сохранения файлов
Типы искомых файлов, появляющиеся в диалоге в выпадающем списке Тип файла задаются свойством Filter. В процессе проектирования это свойство проще всего задать с помощью редактора фильтров, который вызывается нажатием кнопки с многоточием около имени этого свойства в Инспекторе Объектов. При этом открывается окно редактора. В его левой панели Filter Name вы записываете тот текст, который увидит пользователь в выпадающем списке Тип файла диалога. А в правой панели Filter записываются разделенные точками с запятой шаблоны фильтра.
Свойство FilterIndex определяет номер фильтра, который будет по умолчанию показан пользователю в момент открытия диалога. Например, значение FilterIndex = 1 задает по умолчанию первый фильтр.
Свойство InitialDir определяет начальный каталог, который будет открыт в момент начала работы пользователя с диалогом. Если значение этого свойства не задано, то открывается текущий каталог или тот, который был открыт при последнем обращении пользователя к соответствующему диалогу в процессе выполнения данного приложения.
Свойство DefaultExt определяет значение расширения файла по умолчанию. Если значение этого свойства не задано, пользователь должен указать в диалоге полное имя файла с расширением. Если же задать значение DefaultExt, то пользователь может писать в диалоге имя без расширения. В этом случае будет принято заданное расширение.
Свойство Title позволяет вам задать заголовок диалогового окна. Если это свойство не задано, окно открывается с заголовком, определенным в системе. Но вы можете задать и свой заголовок, подсказывающий пользователю ожидаемые действия. Например, «Укажите имя открываемого файла».
Свойство Options определяет условия выбора файла. Множество опций, которые вы можете установить программно или во время проектирования, включает:
ofAllowMultiSelect |
Позволяет пользователю выбирать несколько файлов |
ofCreatePrompt |
В случае, если пользователь написал имя несуществующего файла, появляется замечание и запрос, надо ли создать файл с заданным именем |
ofEnableIncludeNotify |
Разрешает посылать в диалог сообщения |
ofEnableSizing |
Разрешает пользователю изменять размер диалогового окна |
ofExtensionDifferent |
Этот флаг, который можно прочитать после выполнения диалога, показывает, что расширение файла, выбранного пользователем, отличается от DefaultExt |
ofFileMustExist |
В случае, если пользователь написал имя несуществующего файла, появляется сообщение об ошибке |
ofHideReadOnly |
Удаляет из диалога индикатор Открыть только для чтения |
ofNoChangeDir |
После щелчка пользователя на кнопке OK восстанавливает текущий каталог, независимо от того, какой каталог был открыт при поиске файла |
ofNoDereferenceLinks |
Запрещает переназначать клавиши быстрого доступа в диалоговом окне |
ofNoLongNames |
Отображаются только не более 8 символов имени и трех символов расширения |
ofNoNetworkButton |
Убирает из диалогового окна кнопку поиска в сети. Действует только если флаг ofOldStyleDialog включен |
ofNoReadOnlyReturn |
Если пользователь выбрал файл только для чтения, то генерируется сообщение об ошибке |
ofNoTestFileCreate |
Запрещает выбор в сети защищенных файлов и не доступных дисков при сохранении файла |
ofNoValidate |
Не позволяет писать в именах файлов неразрешенные символы, но не мешает выбирать файлы с неразрешенными символами |
ofOldStyleDialog |
Создает диалог выбора файла в старом стиле |
ofOverwritePrompt |
В случае, если при сохранении файла пользователь написал имя существующего файла, появляется замечание, что файл с таким именем существует, и запрашивается желание пользователя переписать существующий файл |
ofPathMustExist |
Генерирует сообщение об ошибке, если пользователь указал в имени файла несуществующий каталог |
ofReadOnly |
По умолчанию устанавливает индикатор Открыть только для чтения при открытии диалога |
ofShareAware |
Игнорирует ошибки нарушения условий коллективного доступа и разрешает, несмотря на них, производить выбор файла |
ofShowHelp |
Отображает в диалоговом окне кнопку Справка |
По умолчанию все перечисленные опции, кроме ofHideReadOnly, выключены. Но, как видно из их описания, многие из них полезно включить перед вызовом диалогов.
Если вы разрешаете с помощью опции ofAllowMultiSelect множественный выбор файлов, то список выбранных файлов можно прочитать в свойстве Files типа TStrings.
В компонентах диалогов открытия и сохранения файлов предусмотрена возможность обработки ряда событий. Такая обработка может потребоваться, если рассмотренных опций, несмотря на их количество, не хватает, чтобы установить все диктуемые конкретным приложением ограничения на выбор файлов. Событие OnCanClose возникает при нормальном закрытии пользователем диалогового окна после выбора файла. При отказе пользователя от диалога нажатии кнопки Отмена, клавиши Esc и т.д. событие OnCanClose не наступает. В обработке события OnCanClose вы можете произвести дополнительные проверки выбранного пользователем файла и, если по условиям вашей задачи этот выбор недопустим, вы можете известить об этом пользователя и задать значение false передаваемому в обработчик параметру CanClose. Это не позволит пользователю закрыть диалоговое окно.
Можно также написать обработчики событий OnFolderChange изменение каталога, OnSelectionChange изменение имени файла, OnTypeChange изменение типа файла. В этих обработчиках вы можете предусмотреть какие-то сообщения пользователю.
Создайте приложение для проигрывания видеофрагментов.
Внешний вид приложения:
Рис. 6. Вид формы с медиаплейером
Рис. 7. Заполнение окна Filter Editor
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
MediaPlayer1.FileName:=OpenDialog1.FileName;
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
end;
А также другие работы, которые могут Вас заинтересовать | |||
85507. | Изучение особенностей института наследования в Российском гражданском праве | 1.29 MB | |
Институт наследования возник несколько тысячелетий назад с появлением частной собственности. Упоминание о наследовании можно найти в самых первых письменных источниках: глиняных табличках Шумера, египетских папирусах и др. Прогрессивное развитие и высокий уровень он получил в римском частном праве. | |||
85509. | Исследования специфики психолого-педагогической диагностики детей с нарушением зрения | 370.5 KB | |
Актуальность исследования данной проблематики связана с тем, что проблемы отклоняющегося развития в условиях экологических и социальных катаклизмов становится глобальными, общезначимыми. В связи с этим своевременная диагностика и специальное образование приобретают важную социальную функцию... | |||
85511. | Совершенствование системы оценки и аттестации персонала на предприятии (на примере ООО «ПромСтройТорг») | 469 KB | |
В настоящее время утвердился взгляд на труд как на сознательную целенаправленную созидательную деятельность, приложение человеком умственных и физических усилий для получения полезного результата в удовлетворении своих материальных и духовных потребностей, как на проявление человеческой личности. | |||
85513. | Технологический процесс обработки детали «Корпус» с использованием станков с программным числовым управлением | 288.35 KB | |
Необходимо обновить основные средства производства, которые в настоящее время достигли критического уровня (до 75%). В перспективе стоит задача подготовки нового квалифицированного рабочего персонала, способного решать вопросы по обслуживанию сложнейшей новой техники, станков с ЧПУ. | |||
85514. | Расчет и анализ технико-экономических показателей производственно-хозяйственной деятельности предприятия | 554 KB | |
Целью курсового проектирования является закрепление полученных знаний, приобретение навыков экономического мышления, умения принимать верные решения в конкретных производственно-экономических ситуациях, анализ и совершенствование хозяйственной деятельности в условиях рыночной экономики. | |||
85515. | Расчет тепловой схемы производственно-отопительной котельной с выбором основного и вспомогательного оборудования | 3.36 MB | |
Задаваемые величины: Тип котла: ДЕ-?-1,4ГМ. Мощность котла подбирается, исходя из требования СНиП (не менее 2 котлов в котельной на требуемую мощность). Тип топки для газа – камерная. Это не исходные данные, а выбрано Вами в результате расчета Расход пара на производство... | |||