Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.016 c
14-92726
Игорь Шевченко
2002-10-08 10:10
2002.10.28
Alx2, с днем рождения!


4-92777
Fargus
2002-09-14 03:25
2002.10.28
Как можно закрить активное окно


14-92718
mifi
2002-10-08 19:30
2002.10.28
как получить список всех накопителей


3-92374
alenka
2002-10-06 00:49
2002.10.28
Как реализовать каскадное удаление?


1-92506
Link
2002-10-08 13:49
2002.10.28
Изменение цвета линий в цикле




   Наверх