Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.12;
Скачать: 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 вся ветка

Текущий архив: 2006.11.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
15-1161653886
partizan
2006-10-24 05:38
2006.11.12
Встроенный ассемблер


4-1151488606
pioner85
2006-06-28 13:56
2006.11.12
Как обработать события клика по balloon tips (вспл. посдк.win xp)


2-1161851084
Tor
2006-10-26 12:24
2006.11.12
Константы сложных типов


3-1158059416
___oleg
2006-09-12 15:10
2006.11.12
Access - как отличить полную дату от неполной


2-1161942939
term1t
2006-10-27 13:55
2006.11.12
statement too long