![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Цвет точек сетки
StriderMan © (2006-10-27 12:53:00)Делаю визуальный редактор компонентов. Необходимо рисовать сетку из точек. Рисую таким кодом:
Canvas.Pen.Mode := pmNotXor;
for x:= 0 to xe do
for y := 0 to ye do
Canvas.Pixels[x * GridX, y * GridY] := clBlack;
Все было бы хорошо, но при цвете
RGB: (128, 128, 128) точки становятся невидимыми. Как вычислить цвет точек, чтобы его было видно всегда?
StriderMan (2006-10-27 15:09:00) [1]
> Pavia © (27.10.06 14:53) [8]
> Canvas.Pen.Mode := pmNotXor; не действует на Pixels, нужно
> делать ручками
еще как действует
Mirage (2006-10-27 15:02:00) [2]>[8] Pavia(c) 27-Oct-2006, 14:53
$808080 xor $FFFFFF=$7F7F7F. ты думаешь, эти два цвета визуально сильно отличаются?
Pavia (2006-10-27 14:53:00) [3]Canvas.Pen.Mode := pmNotXor; не действует на Pixels, нужно делать ручками
canvas.Pixels[10,10]:=not (canvas.Pixels[10,10] xor clBlack) and $FFFFFF;
Mirage (2006-10-27 14:41:00) [4]>[6] StriderMan(c) 27-Oct-2006, 14:29
>поподробнее
RGB->HSL. выясняешь яркость (для того и преобразование). меняешь. HSL->RGB.
это не единственный вариант, но вполне рабочий. вообще, с HSL можно много интересного сделать. код преобразования раскидан по всему интернету. как коровьи лепёшки. %-)
StriderMan (2006-10-27 14:29:00) [5]
> Mirage (27.10.06 13:51) [5]
> RGB->HSL->RGB?
поподробнее
Mirage (2006-10-27 13:51:00) [6]RGB->HSL->RGB?
StriderMan (2006-10-27 13:44:00) [7]
> RWolf
Сделал, работает, но ей-богу ИМХО не изящное решение :)
Но по крайней мере их всегда видно, спасибо
RWolf (2006-10-27 13:17:00) [8]серый - как угодно, пойдёт и чёрная, и белая.
критерий однозначный, яркость цвета вычисляется по стандартной формуле Y = 0.299R + 0.587G + 0.114B.
StriderMan (2006-10-27 13:10:00) [9]
> RWolf © (27.10.06 13:09) [1]
странный критерий "светлый" и "темный". Как определить? А если Серый?
RWolf (2006-10-27 13:09:00) [10]Если фон светлый, ставить чёрную точку. Если тёмный - белую.