|
Вопрос # 316/ вопрос решён / |
|
Здравствуйте уважаемые эксперты! Как известно, палитра формируется из трёх цветов, укажите пожалуйста числовой диапазон изменения каждого из цветов, в смысле конечное и начальное число. И ещё, на форме три движка, как сделать так, чтобы один соответствовал одному цвету, а другие другим цветам, и как по их положению выводить получившийся цвет? Заранее благодарен.
 |
Вопрос задал: Полушин Сергей Анатольевич (статус: Посетитель)
Вопрос отправлен: 16 февраля 2007, 20:32
Состояние вопроса: решён, ответов: 2.
|
Ответ #1. Отвечает эксперт: Вадим К
Смотрим функцию RGB, которая по трём своим параметрам формирует цвет. Параметры имеют тип byte - соответственно диапазон 0..255.
-----
Для движков задаём свойство max=255
дальше для них в обработчике OnChange пишем следующее
Label1.caption:=inttohex(RGB(Trackbar1.position,Trackbar2.position,Trackbar3.position),8);
ну или что то в виде Form1.color:=RGB(.....);
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 16 февраля 2007, 21:20
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Роман
Здравствуйте, Полушин Сергей Анатольевич!Диапазон изменения каждого цвета 0-255;Поповоду второй части посмотри код,там есть функция GetColour(Red,Green,Blue:integer):TColor; - возвращает значение цвета в RGB.
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, Spin, StdCtrls, ComCtrls, ExtCtrls, XPMan, Placemnt, ColorGrd;
-
- type
- TForm1 = class(TForm)
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- TB1: TTrackBar;
- TB2: TTrackBar;
- TB3: TTrackBar;
- Button1: TButton;
- Button2: TButton;
- SpinEditRed: TSpinEdit;
- SpinEditGreen: TSpinEdit;
- SpinEditBlue: TSpinEdit;
- Image1: TImage;
- XPManifest1: TXPManifest;
- FormStorage1: TFormStorage;
- ColorGrid: TColorGrid;
- Panel1: TPanel;
- procedure TB1Change(Sender: TObject);
- procedure TB2Change(Sender: TObject);
- procedure TB3Change(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure SpinEditRedChange(Sender: TObject);
- procedure SpinEditGreenChange(Sender: TObject);
- procedure SpinEditBlueChange(Sender: TObject);
- procedure DrawColor(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure ColorGridClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.dfm}
-
- function GetColour(Red,Green,Blue:integer):TColor;
- begin
- asm
-
- mov ecx,0
-
- mov eax,Red
-
- and eax,255
-
- shl eax,16
-
- xor ecx,eax
-
- mov eax,Green
- and eax,255
- shl eax,8
- xor ecx,eax
-
- mov eax,Blue
- and eax,255
- xor ecx,eax
- mov Result, ecx
- end;
- end;
-
- procedure TForm1.DrawColor(Sender: TObject);
- begin
- Image1.Canvas.Brush.Color:=GetColour(SpinEditBlue.Value,SpinEditGreen.Value,SpinEditRed.Value);
- Image1.Canvas.Rectangle(0,0,217,41);
- end;
-
-
- procedure TForm1.TB1Change(Sender: TObject);
- begin
- SpinEditRed.Value:=TB1.Position;
- end;
-
- procedure TForm1.TB2Change(Sender: TObject);
- begin
- SpinEditGreen.Value:=TB2.Position;
-
- end;
-
- procedure TForm1.TB3Change(Sender: TObject);
- begin
- SpinEditBlue.Value:=TB3.Position;
-
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- Form1.Close;
- end;
-
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- Form1.Close;
- end;
-
- procedure TForm1.SpinEditRedChange(Sender: TObject);
- begin
- DrawColor(Sender);
- TB1.Position:=SpinEditRed.Value;
- end;
-
- procedure TForm1.SpinEditGreenChange(Sender: TObject);
- begin
- DrawColor(Sender);
- TB2.Position:=SpinEditGreen.Value;
- end;
-
- procedure TForm1.SpinEditBlueChange(Sender: TObject);
- begin
- DrawColor(Sender);
- TB3.Position:=SpinEditBlue.Value;
- end;
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- DrawColor(Sender);
- end;
-
- procedure TForm1.ColorGridClick(Sender: TObject);
- begin
- SpinEditRed.Value:=GetRValue(ColorGrid.ForegroundColor);
- SpinEditGreen.Value:=GetGValue(ColorGrid.ForegroundColor);
- SpinEditBlue.Value:=GetBValue(ColorGrid.ForegroundColor);
- end;
-
- end.
-
 |
Ответ отправил: Роман (статус: 5-ый класс)
Время отправки: 17 февраля 2007, 00:29
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 0.
31 января 2011, 19:26: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|