Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.039 c
15-1163378672
Джо
2006-11-13 03:44
2006.12.10
Анимэ. "То" и "это".


15-1164102361
Cyrax
2006-11-21 12:46
2006.12.10
Чем отличается кодер от программиста ?


15-1163781661
DarkFlow
2006-11-17 19:41
2006.12.10
Playlist как у Winamp


2-1164186409
--= Eagle =--
2006-11-22 12:06
2006.12.10
заменить текст чекбокса в OpenDialog


15-1164191107
Master_
2006-11-22 13:25
2006.12.10
MiTeC System Information Component - где взять!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский