Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.10;
Скачать: CL | DM;

Вниз

Цвет точек сетки   Найти похожие ветки 

 
StriderMan ©   (2006-10-27 12:53) [0]

Делаю визуальный редактор компонентов. Необходимо рисовать сетку из точек. Рисую таким кодом:
   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) точки становятся невидимыми. Как вычислить цвет точек, чтобы его было видно всегда?


 
RWolf ©   (2006-10-27 13:09) [1]

Если фон светлый, ставить чёрную точку. Если тёмный - белую.


 
StriderMan ©   (2006-10-27 13:10) [2]


> RWolf ©   (27.10.06 13:09) [1]

странный критерий "светлый" и "темный". Как определить? А если Серый?


 
RWolf ©   (2006-10-27 13:17) [3]

серый - как угодно, пойдёт и чёрная, и белая.
критерий однозначный, яркость цвета вычисляется по стандартной формуле Y = 0.299R + 0.587G + 0.114B.


 
StriderMan ©   (2006-10-27 13:44) [4]


> RWolf

Сделал, работает, но ей-богу ИМХО не изящное решение :)

Но по крайней мере их всегда видно, спасибо


 
Mirage   (2006-10-27 13:51) [5]

RGB->HSL->RGB?


 
StriderMan ©   (2006-10-27 14:29) [6]


> Mirage   (27.10.06 13:51) [5]
> RGB->HSL->RGB?

поподробнее


 
Mirage   (2006-10-27 14:41) [7]

>[6] StriderMan(c) 27-Oct-2006, 14:29
>поподробнее
RGB->HSL. выясняешь яркость (для того и преобразование). меняешь. HSL->RGB.
это не единственный вариант, но вполне рабочий. вообще, с HSL можно много интересного сделать. код преобразования раскидан по всему интернету. как коровьи лепёшки. %-)


 
Pavia ©   (2006-10-27 14:53) [8]

Canvas.Pen.Mode := pmNotXor; не действует на Pixels, нужно делать ручками
canvas.Pixels[10,10]:=not (canvas.Pixels[10,10] xor clBlack) and $FFFFFF;


 
Mirage   (2006-10-27 15:02) [9]

>[8] Pavia(c) 27-Oct-2006, 14:53
$808080 xor $FFFFFF=$7F7F7F. ты думаешь, эти два цвета визуально сильно отличаются?


 
StriderMan ©   (2006-10-27 15:09) [10]


> Pavia ©   (27.10.06 14:53) [8]
> Canvas.Pen.Mode := pmNotXor; не действует на Pixels, нужно
> делать ручками

еще как действует



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

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

Наверх




Память: 0.46 MB
Время: 0.034 c
15-1163699126
furyz
2006-11-16 20:45
2006.12.10
WineHQ + FreeBSD


15-1163624797
unknown
2006-11-16 00:06
2006.12.10
GMail


15-1163685346
Чапаев
2006-11-16 16:55
2006.12.10
"Детям 60-70-80х посвящается"


2-1164171884
DROWSY
2006-11-22 08:04
2006.12.10
Connecting... Failed!


2-1163808177
aleko
2006-11-18 03:02
2006.12.10
надстройка в Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский