Смекни!
smekni.com

Система стиснення відеоданих на основі аналізу ентропійності (стр. 9 из 17)

bsSizeToolWin - Цей тип вікна встановлений у вікні інспектора об'єктів. Таке вікно не має іконки, є заголовок, кнопка керування "закрити". Можна змінювати розмір вікна.

bsToolWindow - Аналогічний попередньому значенню, за винятком того, що не можна змінювати розміри вікна.

Всі вищеописані типи властивості BorderStyle установлюються тільки для працюючого додатка, тобто ми бачимо зміни в оформленні вікна тільки після запуску програми.

Властивість BorderIcons

Ця властивість є вкладеним, обто якщо ви в інспекторі об'єктів натиснете на знак +, то відкриється ще трохи підвластивостей. Властивість BorderIcons має сенс установлювати тільки у відповідних значеннях властивості BorderStyle.

biSystemMemu - указує, відображати чи ні іконку й кнопки керування вікном.

biMinimize - відображати чи ні кнопку керування "згорнути".

biMaximize - відображати чи ні кнопку "розгорнути" ("відновити").

biHelp - відображати чи ні кнопку "допомога".

Можливі два значення для цих властивостей: true (істинно) і false (ложно).

Властивість Position

poDefault - Windows саме визначає розмір і положення вікна.

poDefaultPosOnly - довільне положення вікна.

poDefaultSizeOnly - тільки довільний розмір вікна.

poDesigned - такой-жі розмір і положення, кокою був при розробці. Значення за замовчуванням. Вам належить знати, що не на всіх комп'ютерах установлене такий же екранний дозвіл, яке є у вас, і значить вікна в програмі будуть перебувати в зовсім іншім місці.

poDesktopCenter - вікно перебуває в центрі екрана.

poScreenCenter - вікно перебуває в центрі екрана. Працює із багатодисплейним режимом відображення.

Властивість WindowState

wsMaximized - Вікно спочатку буде розгорнуто у весь екран.

wsMinimized - Вікно спочатку буде згорнуто в значок.

wsNormal - Вікно має ті ж розміри, що й під час розробки. Значення за замовчуванням.

Компонент TEdit

Цей компонент не містить власного коду, у ньому тільки опубліковані властивості його предка TCustomEdit. Він являє собою редагує строку, що (далі - просто редактор).

Стиль обрамлення цього компонента

(Pb) property BorderStyle: TBorderStyle;

за замовчуванням дорівнює bsSingle. Якщо властивість

(Pb) property AutoSize: Boolean;

дорівнює True, компонент змінює свою висоту залежно від розміру шрифту (властивість Font). Для того щоб зміни мали місце, повинен ще бути встановлений стиль обрамлення bsSingle.

Текст, що вводить у редактори, може автоматично піддаватися деяким перетворенням.

Перетворення, що задає властивістю CharCase, дозволяє автоматично перетворювати всі символи тільки у верхній або тільки в нижній регістр:

(Pb) property CharCase: TEditCharCase;

TEditCharCase = (ecNormal, ecUpperCase, ecLowerCase);

За замовчуванням установлений стиль ecNormal і перетворення не відбувається. Аналогічно, властивість

(Pb) property OEMConvert: Boolean;

визначає необхідність автоматичного перетворення символів, що вводять, з кодування OEM в ANSI і назад. Така властивість часто буває потрібно при обробці тексту в кодуванні MS-DOS.

Дві наступні властивості описують поводження виділеного тексту при переході фокуса. Перше з них

(Pb) property AutoSelect: Boolean;

описує реакцію елемента, що редагує, при одержанні фокуса. Якщо воно встановлено в True (за замовчуванням це так), то при одержанні фокуса уведення весь текст у ньому виділяється незалежно від стану властивості SelText. Якщо AutoSelect установлено в False, то при одержанні фокуса виділяється лише те, що було виділено до його втрати.

Після втрати фокуса редактором виділений у ньому текст звичайно губить колірне виділення. Щоб воно залишалося, встановіть в False друга властивість:

(Pb) property HideSelection: Boolean;

На довжину тексту може бути накладене обмеження.

Властивість (Pb) property MaxLength: Integer;

визначає максимальну довжину тексту редактори в символах. Якщо значення цієї властивості дорівнює 0, то обмежень на довжину тексту немає.

Властивість PasswordChar призначена для уведення пароля з використанням редактора:

(Pb) property PasswordChar: Char;

Його значення - це символ, використовуваний для відображення замість будь-яких символів, що вводять.

Можна заборонити можливості редагування тексту. Якщо значення властивості:

(Pb) property Readonly: Boolean;

дорівнює True, текст змінити не можна.

Ви можете відстежити зміни тексту в редакторі, обробляючи вступників події:

(Pb) property OnChange: TNotifyEvent;

Компонент TButton

TObject - > TPersistent - > TCornponent - > TControl - > TWinControl - > - *TButtonControl - > Tbutton

Звичайна кнопка Windows. У цьому компоненті опубліковані тільки властивості Default, Cancel, Caption, ModalResult і OnClick. Подвійний щиглик на кнопці не передбачений.

Компонент TImage

Цей компонент служить надбудовою над класом TPicture і замикає всю ієрархію графічних об'єктів VCL. Він призначений для показу на формі зображення: бітової карти (TBitmap), метафайла (TMetafile), значка (TIcon).

Властивість (Pb) property Picture: TPicture;

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

Як канва використається канва об'єкта Picture. Graphic - тільки якщо поле Graphic посилається на об'єкт класу TBitmap:

(Ro) property Canvas: TCanvas;

Якщо це не так, то спроба звертання до властивості викличе виняткову ситуацію EInvalidOperation, тому що малювати на метафайлі або значку не можна. Будьте уважні із цією властивістю.

Наступні три властивості визначають, як саме Tpicture розташовується в робочій області компонента:

(Pb) property AutoSize: Boolean;

означає, що розміри компонента настроюються по розмірах графічного об'єкта, що втримується в ньому. Установлювати його в True потрібно перед завантаженням зображення з файлу або буфера обміну;

(Pb) property Stretch: Boolean;

якщо ця властивість установлена в True, те зображення "натягається" на робочу область, при необхідності зменшуючи або збільшуючи свої розміри. Якщо воно встановлено в False, то відіграє роль наступна властивість;

(Pb) property Center: Boolean;

якщо ця властивість установлена в True, зображення центрується в межах робочої області. У противному випадку - розташовується в її верхньому лівому куті.

Компонент TLabel

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

Нижче наведені властивості компонента:

(Pb) property Caption: TCaption;

TCaption = string [255] ;

Містить рядок з виведеним текстом.

(Pb) property Alignment: TAlignment;

Установлює правило вирівнювання тексту - по правому, лівому краї або по центрі клієнтської області.

(Pb) property AutoSize: Boolean;

У випадку True відбувається автоматичне приведення розмірів компонента до розмірів тексту й висоті шрифту.

(Pb) property ShowAccelChar: Boolean;

Показує, чи відображається в TLabel акселератор (символ, перед яким коштує знак амперсанда - '&'). Якщо воно дорівнює False, амперсанд ніяк не інтерпретується. У випадку True акселератор виділяється в рядку підкресленням і натискання клавіш <А11>+<символ> приводить до передачі фокуса вікну FocusControl (тому що TLabel сам не є віконним компонентом).

(Pb) property FocusControl: TWinControl;

Визначає віконний компонент, якому посилають повідомлення про уведення акселератора.

(Pb) property Transparent: Boolean;

Прозорість компонента. Якщо властивість установлена в True, то при перемальовуванні елемента керування не відбувається зафарбовування клієнтської області. У противному випадку - відбувається зафарбовування кистю bsSolid і кольорами Color.

(Pb) property WordMrap: Boolean;

Визначає можливість розриву слів у випадку, якщо довжина виведеного тексту перевищує ширину компонента.

4. Тестування програми

У цьому розділі дипломного проекту ми протестуємо нашу програму на стиснення кольорового зображення "восходження". Для тестування було обрані прямий та зворотній методи кодування, з глибиною кольору отриманого зображення 4 та 16 кольорів.

Початковий розмір файлу у форматі. bmp - 1.44 Мб. Розглянемо якість зображення в процесі кодування:

Рисунок 4.1 Метод зворотнього кодування з глибиною кольору 4

Рисунок 4.2 Метод прямого кодування з глибиною кольору 4


Рисунок 4.3 Метод зворотнього кодування з глибиною кольору 16

Рисунок 4.4 Метод прямого кодування з глибиною кольору 16

Як ми бачимо, "прямий" метод показав гарну чутливість до малих значень пікселей, "зворотній" - виділив всі яскраві ділянки вихідного зображення. При цьому всі 4 отриманних зображення мають гарну деталізацію, і чоловіче око майже не помічає різниці між зображеннями, особливо при глибині яскравостей кольорів зображення встановленого у 16.

Таким чином, при роботі з зображеннями, де розподіл світлих та темних кольорів приблизно однаковий, ми можемо помітити, що якість отриманого кодованого зображення залишається задовільною. Особливо важливим цей аспект може стати у нагоді для друкованих видавництв, або для архівів зберігання баз даних зображень (наприклад, міліція та служба безпеки).

В результаті зберігання отриманих файлів зображень, їх розмір зменшився до 240 Кб, що становить 1/6 розміру початкового файлу. При цьому, ці зображення можуть бути додатково закодовані у інший формат, оснований на довжині однакових кодів - тому що в наших отриманих зображеннях є великі одно яскраві частини, його розмір може зменшитися до 40-50 Кб, що майже у 30-35 разів менше за початкове зображення. Звісно, це дуже економить місце на жорсткому диску.

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