Подскажите, плиз, как можно "взять" цвет, в который окрашены в Windows в окнах меню, фон и т.п? По-моему, это называется "Рельефные объекты" в настройках цветовой схемы. Мне необходимо в этот цвет окрашивать область объекта Image в программе на C++ Builder.
Здравствуйте, Drugaya, Вы писали:
D>Подскажите, плиз, как можно "взять" цвет, в который окрашены в Windows в окнах меню, фон и т.п? По-моему, это называется "Рельефные объекты" в настройках цветовой схемы. Мне необходимо в этот цвет окрашивать область объекта Image в программе на C++ Builder.
Смотри по линку название цветов:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getsyscolor.asp
Вместо
COLOR_БЛАБЛА пиши
clБЛАБЛА, вместо
GetSysColor пиши
ColorToRGB.
Что надо писать?
Вот так у меня не работает: Form1->Image2->Canvas->Pixels[j]
=clMenuBar;
Т.е. работает, но дает черный цвет.
D>Здравствуйте, Drugaya, Вы писали:
D>>Подскажите, плиз, как можно "взять" цвет, в который окрашены в Windows в окнах меню, фон и т.п? По-моему, это называется "Рельефные объекты" в настройках цветовой схемы. Мне необходимо в этот цвет окрашивать область объекта Image в программе на C++ Builder.
D>Смотри по линку название цветов:
D>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getsyscolor.asp
D>Вместо COLOR_[i]БЛАБЛА пиши
clБЛАБЛА, вместо
GetSysColor пиши
ColorToRGB.
Здравствуйте, Drugaya, Вы писали:
D>Спасибо оргомное!!!
D>>Что надо писать?
D>>Вот так у меня не работает: Form1->Image2->Canvas->Pixels[j][i]=clMenuBar;
D>>Т.е. работает, но дает черный цвет.
Если хочешь заполнить какую-то область цветом, делай уж лучше так
Form1->Image2->Canvas->Brush->Color = clMenuBar;
Form1->Image2->Canvas->FillRect(Rect(0,0,100,100));
Здравствуйте, Dimonka, Вы писали:
Да кстати

Спасибо еще раз. Просто я большей частью заполняю область поточечно в соответствии со значениями, заданными матрицой для каждой точки. Поэтому и заполнение одним цветом сделала так глупо
D>Если хочешь заполнить какую-то область цветом, делай уж лучше так
D>D> Form1->Image2->Canvas->Brush->Color = clMenuBar;
D> Form1->Image2->Canvas->FillRect(Rect(0,0,100,100));
D>
Здравствуйте, Drugaya, Вы писали:
D>Здравствуйте, Dimonka, Вы писали:
D>Да кстати
Спасибо еще раз. Просто я большей частью заполняю область поточечно в соответствии со значениями, заданными матрицой для каждой точки. Поэтому и заполнение одним цветом сделала так глупо
И все равно, это не дело, скорость будет плохая. Посмотрите в сторону
TBitmap.ScanLine. Или в более низкоуровневые функци
GetDIBits,
SetDIBits. Тут вы сможете менять пикселы в памяти, не используя тормознутую
SetPixel.