Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
![](images/emoji__ok.png)
Предоплата всего
![](images/emoji__signature.png)
Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
ЦВЕТА В ФОРМАТЕ RGB
Постановка задачи
d0.13
Создайте программу, с помощью которой пользователь может увидеть в зависимости от значений насыщенности красного, зеленого и синего результирующий цвет (рис.13).
Новым в этой работе являются:
План разработки программы
Рис.14
Комментарий
Полоса прокрутки ScrollBar может быть горизонтальной (по умолчанию) или вертикальной. Это определяется свойством Kind. В нашем случае используется вертикальная полоса прокрутки.
Выделенный объект |
Вкладка окна Object Inspector |
Имя свойства/ Имя события |
Значение/Действие |
Panell |
Properties |
Name |
RedPanel Комментарий Установка имени панели RedPanel, под которым компонент будет известен программе. |
Caption |
Удалить название объекта |
||
Labell |
Properties |
Name |
RedLabel Комментарий Установка имени метки RedLabel, под которым компонент будет известен программе. |
Caption |
Удалить название объекта |
||
ScrollBar1 |
Properties |
Name |
RedBar Комментарий Установка имени полосы прокрутки RedBar, под которым компонент будет известен программе. |
Max |
255 Комментарий Максимальный диапазон целых значений - количество градаций компонента RGB. |
||
Position |
122 Комментарий Начальная позиция ползунка - начальное значение. |
Аналогично задайте значения для ScrollBar2, Panel2, Label2, присвоив им имена GreenBar, GreenPanel, GreenLabel и ScrollBar3, Panel3, Label3, присвоив им имена BlueBar, BluePanel, BlueLabel.
Выделите компоненты, которые собираетесь выровнять, в нашем случае это RedLabel (Labell), RedPanel (Panell), RedBar (ScrollBarl). Во всех четырех углах каждого выделенного компонента появятся небольшие квадратики-маркеры. А затем вызовите команду главного меню Edit/Align, в результате откроется окно Alignment (рис.15).
Рис.15
Выберите в списке нужный режим выравнивания и нажмите клавишу «OK».
Повторите эту же операцию для других групп компонент (GreenBar, GreenPanel, GreenLabel и BlueBar, BluePanel, BlueLabel).
Выделенный объект |
Вкладка окна Object Inspector |
Имя свойства/ Имя события |
Значение/Действие |
RedBar (см. п.4 - ScrollBarl) |
Events |
OnChange |
RedPanel.Color:= TColorRef(RGB(RedBar.Position,0,0)); RedLabel.Caption:=IntToStr(RedBar.Position ); Panel4.Color:= TcolorRef(RGB (RedBar.Position, GreenBar.Position, BlueBar.Position)); Комментарий В зависимости от передвижения ползунка RedBar, будет меняться цвет панели RedPanel, выводиться числовое значение кода на месте RedLabel и меняться цвет панели Panel4. Функция RGB(R,G,B) превращает три составляющие цвета из трех отдельных значений в одно целое значение цвета. У этой функции три параметра R - значение красного цвета, G - значение зеленого цвета, B - значение синего цвета. В нашем случае в качестве параметров используются значения соответствующих полос прокрутки ScrollBar. TColorRef - это 32-битовое значение, сооветствующее цвету, которое получается с помощью функции RGB. |
Аналогично задайте значения для GreenBar и BlueBar, проследите за правильностью записи параметров в функции RGB.
Задание для самостоятельного выполнения
Подсказка. Поместите в событие при создании формы (OnCreate для Form1) обработку значений позиции RedBar, GreenBar и BlueBar.
Подсказка. Добавьте объект Label4. Поместите в событие по изменению полосы прокрутки ScrollBar (RedBar) дополнительную строку, изменяющую свойство нового компонента Label4:
Label4.Caption:=Format(' %x', [RedBar.Position]);
Для перевода значений в шестнадцатеричную систему счисления можно воспользоваться функцией IntToHex. Описание этой функции можно найти в Help.
Листинг программы
unit Unite,•
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls; type
TForm1 = class(TForm)
RedPanel: TPanel;
GreenPanel: TPanel;
BluePanel: TPanel;
Panel4: TPanel;
RedLabel: TLabel;
GreenLabel: TLabel;
BlueLabel: TLabel;
RedBar: TScrollBar;
GreenBar: TScrollBar;
BlueBar: TScrollBar;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure RedBarChange(Sender: TObject); procedure GreenBarChange(Sender: TObject); procedure BlueBarChange(Sender: TObject); procedure FormCreate(Sender: TObject); private
{ Private declarations } public
{ Public declarations } end;
var
Form1: TForm1; implementation {$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin
Label4.Caption:=Format('%x',[RedBar.Position]);
Label5.Caption:=Format('%x',[GreenBar.Position]);
Label6.Caption:=Format('%x',[BlueBar.Position]);
RedPanel.Color:=RGB(RedBar.Position,0,0);
RedLabel.Caption:=IntToStr(RedBar.Position);
GreenPanel.Color:=RGB(0,GreenBar.Position,0);
GreenLabel.Caption:=IntToStr(GreenBar.Position);
BluePanel.Color:=RGB(0,0,BlueBar.Position);
BlueLabel.Caption:=IntToStr(BlueBar.Position);
Panel4.Color:=RGB(RedBar.Position,GreenBar.Position,BlueBar.Position);
end;
procedure TForm1.BlueBarChange(Sender: TObject);
begin
BluePanel.Color:=
TColorRef(RGB(0,0,BlueBar.Position));
BlueLabel.Caption:=IntToStr(BlueBar.Position);
Panel4.Color:= TcolorRef(RGB (RedBar.Position, GreenBar.Position, BlueBar.Position));
Label6.Caption:=Format('%x',[BlueBar.Position]);
end;
procedure TForm1.GreenBarChange(Sender: TObject); begin
GreenPanel.Color:=
TColorRef(RGB(0,GreenBar.Position,0));
GreenLabel.Caption:=IntToStr(GreenBar.Position);
Panel4.Color:= TcolorRef(RGB (RedBar.Position, GreenBar.Position, BlueBar.Position));
Label5.Caption:=Format('%x',[GreenBar.Position]);
end;
procedure TForm1.RedBarChange(Sender: TObject); begin
RedPanel.Color:=
TColorRef(RGB(RedBar.Position,0,0));
RedLabel.Caption:=IntToStr(RedBar.Position);
Panel4.Color:= TcolorRef(RGB (RedBar.Position, GreenBar.Position, BlueBar.Position));
Label4.Caption:=Format('%x',[RedBar.Position]);
end;
end.