Главная страница
    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.041 c
3-1159775522
VALUA
2006-10-02 11:52
2006.12.10
Копирование базы BASA.GDB в другую папку


15-1163769802
saxon
2006-11-17 16:23
2006.12.10
прикольный тест


3-1160064758
PeterBuild
2006-10-05 20:12
2006.12.10
Вторичные индексы в Парадоксе


15-1163547102
nemo2
2006-11-15 02:31
2006.12.10
a dot b = |a||b|cos(a,b)= Ax*Bx + Ay*By + Az*Bz Почему ?


2-1164173301
Riply
2006-11-22 08:28
2006.12.10
Запись большого количества однотипных данных в Stream.





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