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

Вниз

Формула инверсия цвета   Найти похожие ветки 

 
Ega23 ©   (2005-01-12 14:48) [40]

насчет RGB и HLS - начиная с delphi 6 (предполагаю, у меня cbuilder 6) есть модуль graphutil... советую глянуть...

В конторе Delphi 5 до сих пор как основной инструмент разработки принят...  :-(


 
Ega23 ©   (2005-01-12 14:50) [41]

В общем Background := Background xor $808080  оказалось неплохой идеей. Цвета более-менее сочетаются.
Покажу заказчику возможные проблемы, пусть сам думае...

Всем большое спасибо.


 
Anatoly Podgoretsky ©   (2005-01-12 14:52) [42]

boriskb ©   (12.01.05 14:35) [35]
Ограниченый набор цветов и предпрсмотр сразу в том же диалоге, хороший пример настройка редактора Дельфи.


 
Ega23 ©   (2005-01-12 14:55) [43]

Ограниченый набор цветов и предпрсмотр сразу в том же диалоге, хороший пример настройка редактора Дельфи.

Ну это так и сделано. Щстановился на том, что в этом диалоге настройки добавил задание цвета выделения, которое по-умолчанию поставил xor $808080


 
boriskb ©   (2005-01-12 14:55) [44]

Anatoly Podgoretsky ©   (12.01.05 14:52) [42]

А тема "Как слушать заказчика и что из его требований выполнять, а с чем спорить" - вообще... говорить можно бесконечно :)


 
MBo ©   (2005-01-12 14:59) [45]

в большинстве случаев приемлемо:

function ContrastColor(AColor: TColor): TColor;
const
 TolerSq = 16 * 16;
begin
 if Sqr(GetRValue(AColor) - $80) + Sqr(GetGValue(AColor) - $80)
   + Sqr(GetBValue(AColor) - $80) < TolerSq then
   Result := (AColor + $7F7F7F) and $FFFFFF
 else
   Result := AColor xor $FFFFFF;
end;


 
pasha_golub ©   (2005-01-12 15:05) [46]

wicked ©   (12.01.05 14:43) [39]
а поскольку мне медведь не только на ухо наступил, но и в глаз плюнул,

LOL


 
Alx2 ©   (2005-01-12 15:10) [47]

>MBo ©   (12.01.05 14:59)
для цвета aColor = 10254470 результат неважный :(


 
MBo ©   (2005-01-12 15:19) [48]

>Alx2 ©   (12.01.05 15:10) [47]
не очень симпатичный, конечно, но все же достаточно контрастный.


 
Ega23 ©   (2005-01-12 15:32) [49]

2 MBo ©   (12.01.05 14:59) [45]
Интересное решение. Спасибо.


 
Alx2 ©   (2005-01-12 16:13) [50]

Раз уж написал, то не выкидывать же. :)
Вот моя идея:

Procedure TForm1.Button3Click(Sender: TObject);
Var
 Templates: Array[0..7] Of TColor;

 Function GetDistanceColor(aColor: TColor): TColor; // Ищем "самый далекий" цвет
 Var
   k, dist, maxdist, best: Integer;
 Begin
   best := 0;
   maxdist := GetRValue(aColor) + GetGValue(aColor) + getBValue(aColor);
   For k := 1 To 7 Do
     Begin
       dist := abs(GetRValue(aColor) - GetRValue(Templates[k])) +
         abs(GetGValue(aColor) - GetGValue(Templates[k])) +
         abs(GetBValue(aColor) - GetBValue(Templates[k]));
       If dist > maxdist Then
         Begin
           maxdist := dist;
           best := k;
         End;
     End;
   Result := Templates[best];
 End;
Var
 k1, k2, k3, c: Integer;
Begin
// Сначала заполним вершины куба
 c := 0;
 For k1 := 0 To 1 Do
   For k2 := 0 To 1 Do
     For k3 := 0 To 1 Do
       Begin
         Templates[c] := rgb(255 * k1, 255 * k2, 255 * k3);
         inc(c);
       End;

 If ColorDialog1.Execute Then
   Begin
     Color := ColorDialog1.Color;
     Label1.Caption := IntToStr(Color);
     Label1.Font.Color := GetDistanceColor(ColorDialog1.Color);
   End;
End;


 
pasha_golub ©   (2005-01-12 16:17) [51]

Alx2 ©   (12.01.05 16:13) [50]
Ага, а мне без комментариев кидал... ;-)


 
Alx2 ©   (2005-01-12 16:32) [52]

>pasha_golub ©   (12.01.05 16:17) [51]
Их так не хватало? :)


 
BiN ©   (2005-01-12 16:33) [53]

А не проще ли заставить этого дотошного клиента самому цвет подсветки настраивать.


 
Alx2 ©   (2005-01-12 22:04) [54]

Тромознул с первым вариантом.
Так гораздо короче, быстрее и понятнее:

function GetDColor(const aColor: TColor): TColor;
Type TRec=
   packed record
   r, g, b, dummy: byte
 end;
begin
 Result := aColor;
 with TRec((@Result)^) do
 begin
   if r > 127 then r := 0 else r := 255;
   if g > 127 then g := 0 else g := 255;
   if b > 127 then b := 0 else b := 255;
 end;
end;


 
TButton ©   (2005-01-12 22:34) [55]

вот тебе апельсин =)
http://www.webwhirlers.com/colors/wizard.asp


 
pasha_golub ©   (2005-01-13 10:33) [56]

Мужики, всю ночь не спал, одну штуку вспомнил. Если цвет системный, например, clHighlight, то у него представление отличное от формата RGB. Короче, в старшем байте стоит $80, что говорит о его системности, а в младшем значение типа byte. Короче, цвет clHighlight на самом деле будет представлен как: $8000000D.

Шобы это дело победить, нужно внутри процедуры поставить таку штуку:


...
AColor := ColorToRGB(AColor);
...



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

Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.038 c
4-1102308444
Павел
2004-12-06 07:47
2005.01.23
Открытие из программы текстового файла в блокноте.


3-1103456917
cherrex
2004-12-19 14:48
2005.01.23
можно ли создать распределенную БД на interbase


1-1105446345
Viruz
2005-01-11 15:25
2005.01.23
Exception


1-1105254241
XAdmin
2005-01-09 10:04
2005.01.23
GetCurrentRecord(PChar), обратное преобразование


14-1104708953
Кудесник
2005-01-03 02:35
2005.01.23
Onimusha 3... что это?





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