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

Вниз

Компоненты RGB из констант красок.   Найти похожие ветки 

 
.: Joiro :. ©   (2002-06-30 18:11) [0]

Вот такой у меня к знатокам вопрос:

Из Делфийских констант красок вроде clActiveCaption, clGradientActiveCaption можно получать компоненты RGB или нет?

Вроде туповатый вопрос, но на Delphi 6 под WinXP у такого простого кода:

Color1 := clGradientActiveCaption;

R := GetRValue(Color1);
G := GetGValue(Color1);
B := GetBValue(Color1);

результат всегда один: R,G и B = 0, то есть они не изменились.

Есть ли возможность обойти эту странность?


 
KilkennyCat ©   (2002-07-01 07:32) [1]

я не пробовал проверить это утверждение, хотя склонен думать, что в данном случае либо clGradientActiveCaption - черный, либо в WinXP такого нет (то, что там несколько подобных цветов отсутствует - это доказано печальным опытом).
Но если предположить, что все нормально, и цвет не черный, и константа такая есть, но возврат все равно 0, то надо создать битмап размером 1х1, закрасить его этим цветом и получить новый цвет используя свойство пикселс.


 
.: Joiro :. ©   (2002-07-01 11:19) [2]

Фишка то в том, что в интерфейсе программы есть возможность выбрать эти краски и их можно назначить, например, самой форме (и в runtime), что значит что краски присутствуют. И цвет уж точно не чёрный.

Так что или это в Delphi что-то не так или WinXP, или оба (или всё же я :)).

Пробовал Color1 := Color2 - не помогает, пробовал дать краску форме и Color1 := Form1.Color - тоже не помогает. Но пройсходит только для констант с красками из Windows.

Скорее всего придётся делать с битмапом, только не специально созданным а одним из присутствуюших.

И немножко попробуем поднять шансы получить ответ на другой вопрос: Это дело с красками нужно для этой вещи: http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1025434691&n=3


 
KilkennyCat ©   (2002-07-02 05:39) [3]

Я использую в своей проге такие константы. Работает. Помню, что с какими-то двумя не заработало, несмотря на то, что в интерфейсе они тоже присутствовали (правда, мне сообщало об ошибке при запуске). Делфи 6, ВинХР.


 
.: Joiro :. ©   (2002-07-02 11:07) [4]

Хмм... также при использовании GetRValue, итд? Потому что назначить краску контролам, самой форме или картинке по пикселам (Canvas.Pixels[X,Y]) не проблема, но у меня используется Scanline а там надо разделить краски на RGB составляющие. А каждый раз использовать битмап для перегона красок как-то не совсем хочется.


 
ricks ©   (2002-07-02 14:35) [5]

clActiveCaptio - это системный цвет. Посмотрите в Graphics какой у него номер. Меньше нуля. Поэтому прежде чем использовать GetXValue надо написать:
Color1:=ColorToRGB(Color1)
или
Color1:=GetSysColor(Color1 and $000000FF);
Вот и все. А вы мучались :-)))


 
ricks ©   (2002-07-02 14:36) [6]

clActiveCaption - это системный цвет. Посмотрите в Graphics какой у него номер. Меньше нуля. Поэтому прежде чем использовать GetXValue надо написать:
Color1:=ColorToRGB(Color1)
или
Color1:=GetSysColor(Color1 and $000000FF);
Вот и все. А вы мучались :-)))


 
.: Joiro :. ©   (2002-07-02 16:34) [7]

2ricks

Вот где-то ведь видел и в голове что-то о том было, но вот дырявая память... больщое спасибо за ответ.



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

Текущий архив: 2002.10.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
1-92517
ev
2002-10-17 20:43
2002.10.28
как сделать TStringGrid и TListBox со скролом справа?


4-92788
dumb
2002-09-04 22:56
2002.10.28
Как изменить цвет имен файлов


14-92656
Сергей Ежиков
2002-10-05 19:13
2002.10.28
В чем сделать такую картинку?


14-92731
RV
2002-10-08 17:19
2002.10.28
просто так


14-92647
glina
2002-10-06 11:19
2002.10.28
Кто-нибудь слышал о Delphi 7?