:: Меню ::

Головна
Передмова
СЕРЕДОВИЩЕ РОЗРОБКИ C++ BUILDER
Початок роботи
Перший проект
ПРАКТИКУМ ПРОГРАМУВАННЯ
Графіка
Мультимедіа
Бази даних
Компонент програміста
Консольне застосування
Довідкова система
Створення настановного диска
Приклади програм
C++ Builder — короткий довідник
Книга для гостей
Контакти
Добавити у вибране

:: Друзі ::

 
светящиеся наушники power 4 ep002 оптом Функция шумоподавления и всенаправленный микрофон обеспечивают четкое восприятие голоса. Вы можете наслаждаться очень хорошим качеством музыки, используя эти наушники. Особенности:

:: Лічильники ::

=

 

 

 

 

 

Проглядання відеороликів



Як було сказано вище, компонент Mediaplayer дозволяє проглядати відеоролики і супроводжувану звуком анімацію. Як приклад використання компоненту розглянемо програму Video Player, за допомогою якої можна проглянути невеликий ролик або анімацію. Вид форми програми Video Player приведений на мал. 4.9.

Компонент Opendialog1 забезпечує відображення стандартного діалогового вікна Відкрити файл для вибору файлу. Вікно Відкрити файл стає доступним під час роботи програми в результаті клацання на кнопці Eject (speedbuttoni). Слід звернути увагу, що для управління процесом відтворення кнопки компоненту Mediapiayerl не використовуються, тому властивості Visible компоненту Mediapiayerl привласнено значення false.



Мал. 4.9. Форма програми Video Player


Для управління роботою відеоплеєра використовуються кнопки Play/stop (speedbuttoni) і Eject (speedbutton2)що є компонентами Speedbutton.

Компонент Speedbutton знаходиться на вкладці Additional (мал. 4.10) і є командною кнопкою, на поверхні якої може бути картинка.



Мал. 4.10. Компонент Speedbutton


Кнопка Speedbutton може знаходитися в одному з чотирьох станів: звичайне (не натиснута і доступна); натиснута (користувач встановив покажчик миші на зображення кнопки і натиснув кнопку миші); зафіксована; недоступна. Кожному стану кнопки може відповідати своя картинка.

Властивості компоненту Speedbutton приведені в таблиці. 4.9.

Таблиця 4.9. Властивості компоненту Speedbutton


Властивість

Опис

Name

Ім'я компоненту. Використовується для доступу до компоненту і його властивостей

Glyph

Бітовий обзраз, в якому знаходяться картинки для кожного із станів кнопки. У бітовому образі може бути до чотирьох зображень кнопки

Numglyphs

Кількість картинок в бітовому образі Glyph

Flat

Властивість Flat визначає вид кнопки (наявність межі). Якщо значення властивості рівне trueто межа кнопки з'являється тільки при позиціонуванні покажчика миші на кнопці

Grouplndex

Ідентифікатор групи кнопок. Кнопки, що мають однаковий ідентифікатор групи, працюють подібно до радіокнопок, тобто натиснення однієї з кнопок групи викликає спрацьовування інших кнопок цієї групи. Щоб кнопку можна було зафіксувати, значення цієї властивості не має дорівнювати нулю

Down

Ідентифікатор стану кнопки. Змінити значення властивості можна, якщо значення властивості Groupindex не рівне 0

Allowup

Ознака, що показує, що натиснуту (зафіксовану) кнопку можна віджати

Left

Відстань від лівої межі кнопки до лівої межі форми

Тор

Відстань від верхньої межі кнопки до верхньої межі форми

Height

Висота кнопки

Width

Ширіна кнопки

Enabled

Ознака доступності кнопки. Якщо значення властивості рівне true то кнопка доступна. Якщо значення властивості рівне falseто кнопка не доступна

Visible

Дозволяє приховати кнопку (false) або зробити її видимою (true)

Hint

Подськазка— текст, який з'являється поряд з покажчиком миші при позиціонуванні покажчика на командній кнопці (для того, щоб текст з'явився, значення властивості Showhint мабуть true)

Showhint

Вирішує (frue) або забороняє (false) відображення підказки при позиціонуванні покажчика на кнопці


Властивістю ciiph є бітовий образ, який містить картинки для кнопок. Структура бітового образу Gliph приведена на мал. 4.11. Слід звернути увагу на те, що зсув картинки на кнопці при її натисненні, зміна кольору фону натиснутої кнопки і кольору картинки на недоступній кнопці робить сам компонент. Тому в простому випадку всі картинки образу Gliph можуть бути однаковими.



Мал. 4.11. Структура бітового образу Glyph: картинки, відповідні стану кнопки


Підготувати бітовий образ для кнопки speedbutton можна за допомогою будь-якого графічного редактора, у тому числі і Image Editor. Після запуску Image Editor треба вибрати команду File | New | Bitmap File і у вікні, що з'явилося Bitmap Properties задати розмір бітового образу (наприклад, 19x76 — якщо розмір картинки на кнопці має бути 19x19 пікселів). Як приклад на мал. 4.12 приведений бітовий образ для кнопки Play (speedbutton2). Межі кнопок показані умовно. Звернете увагу, що зображення натиснутої і зафіксованої кнопок зміщені вгору і управо щодо зображень натиснутої і недоступних кнопок. Зроблено це для того, щоб під час роботи програми у користувача не створювалося враження, що кнопка "пішла".



Мал. 4.12. Бітовий образ для кнопки Play


У таблиці. 4.10 приведені значення властивостей компонентів Speedbutton1 і Speedbutton2 програми, що розробляється. Текст програми Video Player приведений в лістингу 4.4.

Таблиця 4.10. Значення властивостей компонентів Speedbutton1 і Speedbutton2


Властивість

Speedbutton1

Speedbutton2

Gliph

ejbtn.bmp

plbtn.bmp

Numgliphs

4

4

Flat

true

true

Allowup

false

true

Grouplndex

0

1

Enabled

true

false

Width

25

25

Height

25

25

Showhint

true

true

Hint

Eject

Play


Лістинг 4.4. Відеоплеєр

//обробка події Create
void __fastcall Tforml::formcreate(Tobject *Sender)
{
Mediaplayerl->display = Forml; 
 // відображення ролика на поверхні
// форми
 }
// повертає розмір кадру AVI-файла
void __fastcall Getframesize(Ansistring f, int *w, int *h)
{
// у заголовку AVI-файла є інформація про розмір кадру 
struct  {
char     RIFF[4]; // рядок RIFF 
long int nu_l[5]; //не використовується 
char    AVIH[4]; // рядок AVIH 
long int nu_2[9]; //не використовується 
long int w;      // ширина кадру 
long int h;      // висота кадру 
} header;
Tfilestream *fs;   // потік (для читання заголовка файлу)
/* оператори оголошення потоку і його створення
можна об'єднати: 
 Tfilestream *fs = new Tfilestream(f,fmopenread); */
fs = new Tfilestream(f,fmopenread};  
  // відкрити потік для читання 
fs->read(&header, sizeof(header));  
  // прочитати заголовок файлу
*w = header.w; *h = header.h; 
delete fs; }
// клацання на кнопці Eject (вибір відеокліпа)
void__fastcall Tforral::speedbuttonlclick(Tobject *Sender)
{
Opendialogl->title = "Вибір кліпу";
Opendialogl->initialdir = "";
Opendialogl->filename = "*.avi";
if ( ! Opendialogl->execute())
return; // користувач натиснув кнопку Відміна
/* При спробі відкрити файл кліпу, який вже відкритий
виникає помилка. */
if ( Mediaplayerl->filename = Opendialogl->filename) return;
/* Користувач вибрав кліп. 
 Задамо розмір і положення "екрану"
 на який буде виведений кліп.
 Для цього треба знати розмір кадрів кліпу. */
int fw, fh;  // розмір кадру кліпу
int top,left; // лівий верхній кут екрану
int sw, sh;  // розмір екрану (ширина, висота)
int mw, mh;  // максимально можливий розмір екрану
// (визначається поточним розміром форми)
float kw, kh; 
 // коеф-ти масштабування кадру по ширині і висоті 
float до;     // коефф-т масштабування кадру
Getframesize(Opendialogl->filename,&fw &fh);
 // отримати розмір кадру
/ / обчислимо максимально можливий розмір кадру
mw = Forml->clientwidth;
mh = Forml->speedbuttonl->top-10;
if ( fw < mw)
kw = 1; // кадр по ширині менше розміру екрану 
 else kw = (float) mw / fw;
if ( fh < mh)
kh = 1; // кадр по висоті менше розміру екрану 
 else kh = (float) mh / fh;
// масштабування має бути пропорційним 
 if ( kw < kh)
до = kw; else до = kh; // тут масштаб визначений 
sw = fw * до; // ширина екрану 
sh = fh * до; // висота екрану 
left = (Forml->clientwidth - sw) / 2; 
top = (Speedbuttonl-xtop - sh) / 2; 
Mediaplayerl->filename = Opendialogl->filename; 
Mediaplayerl->open(); 
< br >
Speedbutton2->enabled = True; 
// кнопка Play тепер доступна 
/* якщо розмір кадру вибраного кліпу 
менше розміру кадру попереднього кліпу 
то екран (область форми) треба очистити */ 
Forml->canvas->
Fillrect(Rect(0,0,clientwidth,speedbuttonl->top)); 
// активізуємо процес відтворення Mediaplayerl->play() ; 
Speedbutton2->down = True; 
Speedbutton2->hint = "Stop";
 Speedbuttonl->enabled = False; } 
// клацання, на кнопці Play/stop (воспроїзведеніє/стоп) 
void _fastcall Tforml::speedbutton2click(Tobject *Sender) 
{
if (Speedbutton2->down) { 
// натиснута кнопка Play 
Mediaplayerl->play(); 
Speedbutton2->hint = "Stop"; 
Speedbuttonl->enabled = False; // кнопка Eject недоступна 
} else 
{ 
// натиснута кнопка Stop Mediaplayerl->stop() ; 
Speedbutton2->hint = "Play"; 
Speedbuttonl->enabled = True; // кнопка Eject доступна } 
} 
11 сигнал від плеєра 
void__fastcall Tforml::mediaplayerlnotify(Tobject *Sender) 
{ 
if ( ( Mediaplayerl->mode == mpstopped) && 
  (
 Speedbutton2->down))
Speedbutton2->down = False;   // "віджати" кнопку Play 
 
Speedbutton2->hint = "Play"; 
Speedbuttonl->enabled =    True;   // зробити доступною кнопку 
 Eject
  } 

Слід звернути увагу на наступне. Як екран, на якому здійснюється відтворення відеороликів, використовується поверхня форми. Тому встановити значення властивості Display компоненту Mediaplayer1 під час розробки форми не можна. Крім того, розмір екрану має бути рівний або пропорційний розміру кадрів ролика. Значення властивості Display встановлює фенкция Обробки події Create для форми, а розмір і положення екрану на формі — функція обробки події click на кнопці Eject (speecffiuttoni). Розмір екрану встановлюється максимально можливим і таким, щоб ролик відтворювався без спотворення (висота і ширина екрану пропорційні висоті і ширині кадрів). Розмір кадрів ролика повертає функція Getframesizeяка витягує потрібну інформацію із заголовка файлу.

 


Настоящие путаны Волгограда по ссылка удовлетворят все ваши фантазии. | Изумительные формы путан Волгограда для ваших утех. | Сделайте подарок для своего тела - путаны Омска помогут вам в этом.
x

:: Наша кнопка ::

Отримати код:

Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


:: Реклама ::


:: Посилання ::

-


 

 

 


Copyright by Zvircom © 2009