![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Добрый день , помогите советом, стоит задача выбора цвета
JTAG © (2006-10-26 19:06:00)как в графическом редакторе есть квадратное поле в котором присутствуют все цвета и оттенки радуги, пользователь тыкает мышкой на нужный оттенок и я должен получить три составляющие RGB этого оттенка.
1).Вопрос первый как получить этот квадрат с палитрой?
2). Как организовать выбор цвета при помощи мышки?
Определить цвет формы я понял как
i:=Form1.Canvas.Pixels[x,y];
R:=i mod 256;
G:=(i div 256) mod 256;
B:=i div 65536;
Но не совсем понятно как определять координаты мышки когда пользователь жмет на палитру
JTAG (2006-10-26 19:48:00) [1]Спасибо Ketmar вроде теперь стало яснее!
JTAG (2006-10-26 19:46:00) [2]Выборку нужно именно на форме про стандартный диалог я знаю.
Ketmar (2006-10-26 19:43:00) [3]>[5] DrPass(c) 26-Oct-2006, 19:40
>А я бы лучше почитал доку, как вызвать аналогичный
>стандартный виндовый диалог...
может, человеку надо именно на форме выборку иметь, а не диалогом?
DrPass (2006-10-26 19:40:00) [4]А я бы лучше почитал доку, как вызвать аналогичный стандартный виндовый диалог...
Ketmar (2006-10-26 19:38:00) [5]уффф... вам бы, барин, книги почитать.
хинт: TImage, OnMouseDown(). кладёшь на форму компонентик Image(). туда загружаешь (или рисуешь, это не важно) картинку-палитру. назначаешь обработчик. в OnMouseDown() тебе дадут координаты на этой картинке. ы?
JTAG (2006-10-26 19:33:00) [6]Вот в этом и сложность, не совсем пойму как это сделать . Скажем нарисовал я палитру вот код ниже, правда пока палитра вся белого цвета
я могу узнать RGB каждого пиксела этой палитры вот таким образом
--Объявил переменные ----
var pixelcolor:TColor;
var bitmap:TBitmap;
---------------------------
-------- Создаю палитру (пока только она вся белого цвета)
bitmap:=TBitmap.Create;
bitmap.Width:=200;
bitmap.Height:=32;
bitmap.Canvas.Brush.Color:=clwhite;
bitmap.Canvas.FillRect(Rect(0,0,100,100));
bitmap.Canvas.MoveTo(0,0);
-----------------Могу найти RGB каждого пиксела картинки
pixelcolor:=bitmap.Canvas.Pixels[j,i];
R:=pixelcolor mod 256;
G:=(pixelcolor div 256) mod 256;
B:=pixelcolor div 65536;
Теперь самый главный вопрос как делается так чтобы пиксел у которого нужно узнать цвет выбирался пользователем при помощи мыши. И при том RGB пиксела должно выбираться только когда пользователь целкает по палитре , а не по любому месту формы.
Ketmar (2006-10-26 19:16:00) [7]и ещё: представь, что у пользователя режим "256 colors". если не 16. что тогда вернёт Pixels[]? да и в режимах "true color/high color" значения будут отличаться. надо не "читать пикселы" (тем более, что эта часть формы запросто может быть чем-то перекрыта), а вычислять цвет на основе координат.
Ketmar (2006-10-26 19:14:00) [8]1) нарисовать, наверное?
2) OnMouseDown, F1.