Вниз
Скачать: CL | DM;

Добрый день , помогите советом, стоит задача выбора цвета   Найти похожие ветки 

← →
JTAG   (2006-10-26 19:06) [0]

как в графическом редакторе есть квадратное поле в котором присутствуют все цвета и оттенки радуги, пользователь тыкает мышкой на нужный оттенок и я должен получить три составляющие RGB этого оттенка.
1).Вопрос первый как получить этот  квадрат с палитрой?
2). Как организовать выбор цвета при помощи мышки?
Определить цвет формы я понял как
i:=Form1.Canvas.Pixels[x,y];
R:=i mod 256;
G:=(i div 256) mod 256;
B:=i div 65536;  
Но не совсем понятно как определять координаты мышки когда пользователь жмет на палитру


← →
Ketmar ©   (2006-10-26 19:14) [1]

1) нарисовать, наверное?
2) OnMouseDown, F1.


← →
Ketmar ©   (2006-10-26 19:16) [2]

и ещё: представь, что у пользователя режим "256 colors". если не 16. что тогда вернёт Pixels[]? да и в режимах "true color/high color" значения будут отличаться. надо не "читать пикселы" (тем более, что эта часть формы запросто может быть чем-то перекрыта), а вычислять цвет на основе координат.


← →
JTAG   (2006-10-26 19:33) [3]

Вот в этом и сложность, не совсем пойму как это сделать .  Скажем нарисовал я палитру вот код ниже, правда пока палитра вся белого цвета  
я могу узнать 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:38) [4]

уффф... вам бы, барин, книги почитать.
хинт: TImage, OnMouseDown(). кладёшь на форму компонентик Image(). туда загружаешь (или рисуешь, это не важно) картинку-палитру. назначаешь обработчик. в OnMouseDown() тебе дадут координаты на этой картинке. ы?


← →
DrPass ©   (2006-10-26 19:40) [5]

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


← →
Ketmar ©   (2006-10-26 19:43) [6]

>[5] DrPass(c) 26-Oct-2006, 19:40
>А я бы лучше почитал доку, как вызвать аналогичный
>стандартный виндовый диалог...
может, человеку надо именно на форме выборку иметь, а не диалогом?


← →
JTAG   (2006-10-26 19:46) [7]

Выборку нужно именно на форме про стандартный диалог я знаю.


← →
JTAG   (2006-10-26 19:48) [8]

Спасибо Ketmar вроде теперь стало яснее!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.029 c
15-1161196483
Kerk
2006-10-18 22:34
2006.11.12
Что делать, если ничто не мотивирует? (-)


1-1159514151
Jakudza
2006-09-29 11:15
2006.11.12
Как записать/прочитать значение цвета в реестр


15-1160665605
Marser
2006-10-12 19:06
2006.11.12
Ура!


2-1161971120
rar
2006-10-27 21:45
2006.11.12
название текущей схемы


3-1158077928
Деня
2006-09-12 20:18
2006.11.12
Работа с типом INTERVAL




   Наверх