Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab3.pdf
Скачиваний:
6
Добавлен:
11.02.2016
Размер:
91.77 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА «ВЫБОР ЦВЕТА В КОДИРОВКЕ RGB»

Цель работы:

Ознакомиться с кодировкой цвета RGB, использованием диалога выбора цвета TColorDialog, работой с компонентами TTrackBar, TShape и а также синхронизацией одновременного отображения данных различными элементами управления.

Задание на лабораторную работу

Используя среду разработки BDS Delphi разработать приложение (VCL Forms Application), которое предназначено для синтеза RGB цвета из его составляющих.

Дизайн интерфейса приложения разработать, как показано на рисунке 1.

 

 

MainShp

 

 

 

 

 

 

DecLb

 

 

 

 

HexLb

RedGb

 

RTb

 

REd

 

 

 

 

RShp

 

 

 

RLb

 

 

GTb

 

GreenGb

 

 

 

 

 

 

GEd

 

 

 

 

GShp

 

BTb

 

GLb

 

 

 

BlueGb

 

 

 

BEd

 

 

ColorDialog

 

 

 

 

 

BShp

SelectBt

 

ExitB

BLb

 

 

 

 

 

t

 

 

 

 

Рисунок 1 – Внешний вид интерфейса и имена компонентов

Приложение должно:

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

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

с помощью стандартного диалога выбора устанавливать цвет и его составляющие. Диалог вызывать нажатием на кнопке;

добавить кнопку закрывающую приложение.

Конструирование главного окна приложения

Шаг 1 Создание проекта

Создать новый проект, используя шаблон VCL Forms Application. Используя команду «Save All» (Сохранить все) сохранить файлы проекта в отдельную папку. Имя модуля формы главного окна задать SelColMain. Имя проекта задать SelColor.

Шаг 2 Настройка свойств формы

Используя Object Inspector, установить следующие свойства главной формы приложения.

Имя главной формы.

Name = SelColMainFm Текст заголовка окна.

Caption = Выбор цвета в системе RGB

Начальное положение окна после запуска приложения. Окно появляется по центру экрана.

Position = poScreenCenter

Внешний вид и поведение границы окна. Окно не может изменять размеры, в системном меню присутствуют команды «Свернуть» (Minimize) и «Развернуть» (Maximize).

BorderStyle = bsSingle

Команды системного меню окна. Для блокирования команды «Развернуть»

BorderIcons->biMaximize = False

Шаг 3 Размещение компонентов на форме

В соответствии с рисунком 1 расположить на форме все необходимые компоненты. Установить значения свойства Name компонентов так, чтобы было понято их назначение и тип. Для компонентов, которые не упоминаются в процедурах-обработчиках событий устанавливать «понятные» имена не обязательно.

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

Компоненты отображения значения суммарного цвета: Label1: TLabel – надпись «Суммарный цвет»;

MainShp: TShape – графическая фигура для отображения суммарного цве-

та;

GroupBox1: TGroupBox – панель группы компонентов; Label2: TLabel – надпись «Dec =»;

DecLb: TLabel – надпись для отображения значения константы в десятичном исчислении;

Label3: TLabel – надпись «Hex =»

HexLb: TLabel – надпись для отображения значения константы в шестнадцатеричном исчислении;

Компоненты редактирования и отображения значения красной составляющей цвета:

RedGb: TGroupBox – панель группы компонентов;

RShp: TShape – графическая фигура для отображения интенсивности составляющей;

RTb: TTrackBar – полоса прокрутки для пропорционального изменения значения составляющей;

REd: TEdit – поле редактирования для отображения и редактирования значения составляющей в десятичном исчислении;

RLb: TLabel – надпись для отображения значения составляющей в шестнадцатеричном исчислении.

Компоненты редактирования и отображения значения зеленой составляющей цвета:

GreenGb: TGroupBox – панель группы компонентов;

GShp: TShape – графическая фигура для отображения интенсивности составляющей;

GTb: TTrackBar – полоса прокрутки для пропорционального изменения значения;

GEd: TEdit – поле редактирования для отображения и редактирования значения составляющей в десятичном исчислении;

GLb: TLabel – надпись для отображения значения составляющей в шестнадцатеричном исчислении.

Компоненты редактирования и отображения значения синей составляющей цвета:

BlueGb: TGroupBox – панель группы компонентов;

BShp: TShape – графическая фигура для отображения интенсивности составляющей;

BTb: TTrackBar – полоса прокрутки для пропорционального изменения значения;

BEd: TEdit – поле редактирования для отображения и редактирования значения составляющей в десятичном исчислении;

BLb: TLabel – надпись для отображения значения составляющей в шестнадцатеричном исчислении.

Прочее:

SelectBt: TButton – кнопка вызова диалога цвета; ExitBt: TButton – кнопка выхода;

ColorDialog: TColorDialog – диалог выбора цвета.

Шаг 4 Настройки свойств компонентов формы

В соответствии с рисунком 1 установить значения свойства Caption компонентов (если оно есть).

Установить следующие свойства для всех полос прокрутки TTrackBar

Начальное и конечное значение свойства Position Min = 0

Max = 255

Шаг перемещения указателя с помощью клавиш «Page Up» и «Page Down»

PageSize = 8 Частота отображения маркеров на экране

Frequency = 8

Для полей редактирования TEdit установить значения свойства Text = 0

Для надписей TLabel Label2, DecLb, Label3 и HexLb установить характеристики шрифта

Font->Height = 18

Это улучшит читаемость приложения и подчеркнет их значимость.

Разработка обработчиков событий

Шаг 5 Внешний вид интерфейса при изменении данных

С помощью Object Inspector (вкладка Events) добавить одновременно для всех полос прокрутки обработчик события OnChange «Изменение состояния».

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

Этими характеристиками являются:

для графической фигуры – цвет подложки, свойство Brush.Color;

для поля редактирования – текст, свойство Text;

для надписи – надпись, свойство Caption.

procedure TSelColMainFm.TbChange(Sender: TObject); begin

//Установка внешнего вида компонентов отвечающих за отображение: //красного цвета

RShp.Brush.Color := RGB(RTb.Position,0,0);

REd.Text := IntToStr(RTb.Position); RLb.Caption := '$'+IntToHex(RTb.Position,2);

//зеленого цвета

GShp.Brush.Color := RGB(0,GTb.Position,0); GEd.Text := IntToStr(GTb.Position); GLb.Caption := '$'+IntToHex(GTb.Position,2);

//синего цвета

BShp.Brush.Color := RGB(0,0,BTb.Position); BEd.Text := IntToStr(BTb.Position); BLb.Caption := '$'+IntToHex(BTb.Position,2);

//Установка внешнего вида компонентов отвечающих за отображение //суммарного цвета

MainShp.Brush.Color := RGB(RTb.Position,GTb.Position,BTb.Position); DecLb.Caption := IntToStr(MainShp.Brush.Color); HexLb.Caption := '$' + IntToHex(MainShp.Brush.Color,6); end;

В данной процедуре-обработчике не следует устанавливать положение ползунков полос прокрутки, так как это приведет к бесконечному рекурсивному вызову обработчика.

Шаг 6 Установка значения компоненты цвета полем редактирования

С помощью Object Inspector (вкладка Events) добавить для всех полей редактирования свой обработчик события OnExit «Потеря фокуса ввода».

В нем проводится преобразование текста поля редактирования в целое значение. Если значение выходит за пределы 0..255 оно приводится к границам диапазона. В случае невозможности преобразования выводится сообщение об ошибке и фокус ввода возвращается в компонент.

procedure TSelColMainFm.REdExit(Sender: TObject); var

Val : Integer; begin

try

Val := StrToInt(REd.Text); if Val < 0 then Val := 0;

if Val > 255 then Val := 255; RTb.Position := Val; except

on E: EConvertError do begin

MessageDlg('Неверное целое значение!',mtError,[mbOK],0); REd.SetFocus;

end;

end;

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]