| 
| 
 | Вопрос # 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);beginImage1.Canvas.Brush.Color:=GetColour(SpinEditBlue.Value,SpinEditGreen.Value,SpinEditRed.Value);Image1.Canvas.Rectangle(0,0,217,41);end;  procedure TForm1.TB1Change(Sender: TObject);beginSpinEditRed.Value:=TB1.Position;end; procedure TForm1.TB2Change(Sender: TObject);beginSpinEditGreen.Value:=TB2.Position; end; procedure TForm1.TB3Change(Sender: TObject);beginSpinEditBlue.Value:=TB3.Position; end; procedure TForm1.Button1Click(Sender: TObject);beginForm1.Close;end; procedure TForm1.Button2Click(Sender: TObject);beginForm1.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);beginDrawColor(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) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |