Форум: "Media";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
ВнизКомпоненты 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 вся ветка
Форум: "Media";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c