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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.047 c
4-1101999562
Priest
2004-12-02 17:59
2005.01.23
Остановка дочернего потока


4-1101985427
Ana
2004-12-02 14:03
2005.01.23
Как отловить нажатие кнопки в окне чужого приложения?


3-1103479027
alextov
2004-12-19 20:57
2005.01.23
в Fast Report после экспорта в html не открываются отчеты


14-1105115023
X9
2005-01-07 19:23
2005.01.23
Проблемы с принтером HP LaserJet 1010


3-1103272846
hawkins
2004-12-17 11:40
2005.01.23
Interbase6: список всех юзеров