Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОД_ТРПО (отдать).DOC
Скачиваний:
22
Добавлен:
17.08.2019
Размер:
4.36 Mб
Скачать

Лабораторная работа 7. Разработка проекта «Цвета в формате rgb»

Постановка задачи.

Создать программу, с помощью которой пользователь мог бы увидеть в зависимости от значений насыщенности красного, зеленого и синего цветов результирующий цвет (рис.14).

Пояснение. Новым в этой работе будет использование:

  • полос прокрутки ScrollBar для ввода данных,

  • функции преобразования значений цветовых составляющих TColorRef.

План разработки программы

  1. Открыть новый проект.

  2. Разместить на форме экземпляры компонентов в соответствии с рис.15.

Рис. 16. Рис. 17.

  1. Полоса прокрутки ScrollBar может быть горизонтальной (по умолчанию) или вертикальной. Это определяется свойством Kind. В нашем случае используется вертикальная полоса прокрутки.

  2. Сохранить код программы и проект под именами, например, unit6.pas и pr6.dpr.

  3. Выполнить следующие действия:

Выделенный

объект

Вкладка окна Object Inspector

Имя свойства

Действие

ScrollBarl

Properties

Name

Установка имени полосы прокрутки «RedBar», под которым компонент будет известен программе.

Max

Установка максимального количества градаций компонента RGB:255

Position

Установка начального значения:122

Аналогично задать значения для ScrollBar2 и ScrollBar3, присвоив им имена «GreenBar» и «BlueBar»

  1. Для всех компонентов формы установите значение свойства Caption

  2. Выполнить следующие действия:

Выделенный объект

Вкладка окна Object Inspector

Имя свойства/события

Действие

RedBer

Events

OnChange

Panell.Color:=TColorRef(RGB

(RedBar.Position,0,0);

Label.Caption:=IntToStr(RetBer.

Position);

Pane14.Color:= TcolorRef(RGB

(RedBer.Position,GreenBar

Position, BlueBar.Position));

Аналогично задать значения для ScrollBar2 и ScrollBar3, проследить за правильностью записи параметров функций RGB и IntToStr.

Пояснение. В зависимости от передвижения ползунка ScrollBar1 ,будет меняться цвет Panel1, выводиться числовое значение кода на месте Label1 и меняться цвет Panel4.

  1. Сохранить проект, запустить и протестировать его.

Задание для самостоятельного выполнения.

  1. Поместить на форму кнопку выхода из программы.

  2. Предусмотреть, чтобы после запуска программы устанавливались начальные цвета панелей в зависимости от исходных значений ползунков.

Подсказка. Предусмотреть в реакции на событие OnCreate для формы Form1 обработку значений ScrollBar1, ScrollBar2 и ScrollBar3.

  1. Внести в программу изменения, чтобы значение кода цвета выводилась не только в десятичной, но и в шестнадцатеричной системе счисления.

Листинг программы

Unit Unit6;

interface

private

(Private declarations)

public

(Public declarations)

end;

var

Form1: TForm1;

Implementation

{SR*.DFM}

procedure TForm1.RedBarChange(Sender:TObject);

begin

Pane11.Color:=RGB(RedBar. Position,0,0);

Labe11.Caption:=IntToStr(RedBar.Position);

Labe14.Caption:=Format( ́0x%x ́,[RedBar.Position]);

Pane14.Color:=RGB(RedBar.Position, GreenBar.Position,BlueBar.Position);

end;

procedure TForm1.BlueBarChange (Sender: TObject);

begin

Pane12.Color:=RGB(0,GreenBar.Position,,0);

Labe12.Caption:=IntToStr(GreebBar.Position);

Labe15.Caption:=Format(‘0x%x’, [GreenBar.Position]);

Pane14.Color:=RGB(RedBar.Position,GreenBar.Position,BlueBar.Position);

end;

procedure TForm1.BlueBarChange(Sender:TObject);

begin

Pane13.Color:=RGB(0,0,BlueBar.Position);

Labe13.Caption:=IntToStr(BlueBar.Position);

Labe16.Caption:=Format(‘0x%x’,[BlueBar.Position]);

Pane14.Color:=RGB(RedBar.Position,GreenBar.Position,BlueBar.Position);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Labe14.Caption:=Format(‘0x%x’,[RedBar.Position]);

Labe15.Caption:=Format(‘0x%x’,[GreenBar.Position]);

Labe16.Caption:=Format(‘0x%x’,[BlueBar.Position]);

Pane11.Color:=RGB(RedBar.Position,0,0);

Labe11.Caption:=IntToStr(RedBar.Position);

Pane12.Color:=RGB(0,GreenBar.Position,0);

Labe12.Caption:=IntToStr(GreenBar.Position);

Pane13.Color:=RGB(0,0,BlueBar.Position);

Labe13.Caption:=IntToStr(BlueBar.Position);

Pane14.Color:=RGB(RedBar.Position,GreenBar.Position,BlueBar.Position);

end;

end.