Главная страница
    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.047 c
9-1139750452
cava
2006-02-12 16:20
2006.12.10
Спрайты


15-1163914709
Tirael
2006-11-19 08:38
2006.12.10
крыша едет...


2-1164247598
uleess
2006-11-23 05:06
2006.12.10
Необходим дозвоньшик в интернет уневерсальный! Для Win98 и WinXP


9-1139484128
pavel_guzhanov
2006-02-09 14:22
2006.12.10
3Dmax и Delphi


2-1164214839
Галинка
2006-11-22 20:00
2006.12.10
"Резинка" в c#





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