Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder

Войти
Регистрация
Восстановить пароль
 
FreeFall
0 / 0 / 0
Регистрация: 09.12.2014
Сообщений: 9
#1

Перевести строку в цвет, интерпретировать форматы RGB -> BGR - C++ Builder

04.02.2015, 20:01. Просмотров 1313. Ответов 8
Метки нет (Все метки)

Перевожу строку в цвет и закрашиваю метку, но красное и синее значение цвета поменялись местами.
К примеру ввожу в Edit1 "FF0000" - метка должна принять красный цвет, но получается синий.
Как исправить эту ситуацию?
C++
1
2
3
String Col=Edit1->Text, Cl="0x"+Col;
TColor Br=StringToColor(Cl);
Label5->Color=Br;
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2015, 20:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевести строку в цвет, интерпретировать форматы RGB -> BGR (C++ Builder):

Как можно задать цвет в RGB? - C++ Builder
Как задать цвет в билдере, например кодом #f533a4? Или процентним соотношением И можно ли както применить етот цвет для форм, едитов...

Не совпадает цвет с кодом RGB в StringGrid - C++ Builder
вот таким кодом должна рисоваться таблица с красным текстом, а у меня синим выводит. Меняю цвет на другой, цвет таблицы меняется, но коду...

Как задать цвет в rgb? - C++ Builder FireMonkey
Как, собственно, задать цвет? Пытался по разному - безуспешно. Вроде там RGBA, но как? Form1->Fill->Color = RGB(255,50,30); ...

Перевести цвет из модели HSV в RGB - Delphi
Как в Delphi перевести цвет из модели HSB в RGB? Есть перевод RGB->HSB: procedure TForm1.RGBToHSB(R,G,B:byte;var Hue: byte; ...

Как перевести обычный цвет VB в hex, html, rgb? - Visual Basic
Народ !! подскажите как перевести обычный цвет VB в хекс , хтмл, ржб !!!

Цвет в цветовой схеме RGB – определить “средний цвет” - C (СИ)
2. Описать структуры для хранения описания объектов и функции выполняющие вычисления для массива структурного типа : - цвет в цветовой...

8
gunslinger
случайный прохожий
1156 / 774 / 201
Регистрация: 20.07.2013
Сообщений: 2,163
04.02.2015, 20:50 #2
Видимо, тут случай BGR (синий зеленый красный), а не RGB (красный зеленый синий).
То есть используй "0000FF" для красного цвета.
0
FreeFall
0 / 0 / 0
Регистрация: 09.12.2014
Сообщений: 9
04.02.2015, 20:52  [ТС] #3
Есть какой-нибудь метод? Или придётся менять вручную?
0
ivan.-94
Я Фоюмчанин ? дааааа)
208 / 199 / 13
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
04.02.2015, 21:04 #4
Так на ум приходит - конвертировать в строку и реверс.

Добавлено через 1 минуту
Хотя у вас изначально строка.
перед TColor Br=StringToColor(Cl); перевернуть Cl
0
FreeFall
0 / 0 / 0
Регистрация: 09.12.2014
Сообщений: 9
04.02.2015, 21:07  [ТС] #5
Теоретически да, но если будет "55F300", то получится "003F55"
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24655 / 16325 / 5024
Регистрация: 22.10.2011
Сообщений: 28,909
Записей в блоге: 5
04.02.2015, 21:30 #6
Если мне память не изменяет - пишется вот такая функция:
C++
1
2
3
4
TColor RgbToBgr(TColor RGB)
{
    return ((RGB & 0x000000FF) << 16) | (RGB & 0x0000FF00) | ((RGB & 0x00FF0000) >> 16);
}
, и вызывается:
C++
1
TColor Br= RgbToBgr(StringToColor(Cl));
2
FreeFall
0 / 0 / 0
Регистрация: 09.12.2014
Сообщений: 9
04.02.2015, 22:17  [ТС] #7
К сожалению, не работает.
Перевести строку в цвет, интерпретировать форматы RGB -> BGR
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24655 / 16325 / 5024
Регистрация: 22.10.2011
Сообщений: 28,909
Записей в блоге: 5
04.02.2015, 22:20 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Функция пишется не внутри другой, а снаружи. Например, так:
C++
1
2
3
4
5
6
7
8
9
10
11
TColor RgbToBgr(TColor RGB)
{
    return ((RGB & 0x000000FF) << 16) | (RGB & 0x0000FF00) | ((RGB & 0x00FF0000) >> 16);
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    String Col = Edit1->Text, Cl = "0x" + Col;
    TColor Br = RgbToBgr(StringToColor(Cl));
    Label5->Color = Br;
}
1
FreeFall
0 / 0 / 0
Регистрация: 09.12.2014
Сообщений: 9
04.02.2015, 22:40  [ТС] #9
Спасибо за помощь (код работает). Сразу функцию не распознал.
0
04.02.2015, 22:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2015, 22:40
Привет! Вот еще темы с ответами:

Как можно интерпретировать строку if (a = !B) - C (СИ)
Доброго времени суток, подскажите новичку, как можно интерпретировать строку if (a=!b) из: int a=7, b=0; if (a=!b) ...

Цвет в OLE_COLOR, в RGB и в HTML - Visual Basic
Скажите, как перевести значение цвета OLE_COLOR &lt;-&gt; RGB &lt;-&gt; HTML? Или хотя бы намекните, какова природа цифр в windows цветах.

Найти приблизительный цвет RGB - C++
Добрый вечер, пытаюсь написать бота для игры, есть код: HDC hdc=GetDC(Handle_ArcheAge); COLORREF c = GetPixel (hdc, 110, 39); //...

Вернуть цвет пикселя в RGB - Delphi
Добрый день. Как зная координаты пикселя на Image1 или Форме получить цвет этого пикселя?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.