Как преобразовать значение цвета, созданное функцией Win32 API "ChooseColor", в шестнадцатеричное значение rgb, совместимое с css - PullRequest
2 голосов
/ 31 января 2012

У меня есть значение, созданное API-функцией win32 ChooseColor , и я хочу преобразовать его в шестнадцатеричный rgb-триплет.Как мне это сделать.Какой именно номер возвращает ChooseColor?

Ответы [ 5 ]

5 голосов
/ 31 января 2012

Когда вы делаете это в .NET, вы можете использовать значение COLORREF и преобразовать в цвет .NET, используя:

Color colour = ColorTranslator.FromWin32(myColorRef);

Если вы хотите использовать его в виде шестнадцатеричной строки в формате HTML:

string htmlColour = ColorTranslator.ToHTML(colour);
2 голосов
/ 31 января 2012

При возврате структура CHOOSECOLOR содержит rgbResult, что является значением RGB, упакованным в 32-битное значение COLORREF (с использованием 24 бит).В C ++ для получения компонентов можно использовать макросы GetRValue , GetGValue и GetBValue.

0 голосов
/ 31 января 2012

В документации ChooseColor(), возвращаемое им "число" является просто логическим значением, указывающим, выбрал ли пользователь какой-либо цвет или нет.

Значение цветазаполняется CHOOSECOLOR структура , которую вы передаете в качестве единственного аргумента, в частности, в его поле rgbResult.

Если вы определите COLORREF структуру Это тип поля rgbResult, в соответствии с pinvoke.net как:

[StructLayout(LayoutKind.Sequential)]
struct COLORREF {
   public byte R;
   public byte G;
   public byte B;
}

Затем вы можете получить значения RGB, обратившись к R, G и B поля.

0 голосов
/ 31 января 2012

COLORREF:

При указании явного цвета RGB значение COLORREF имеет следующую шестнадцатеричную форму:

0x00bbggrr

Младший байт содержит значение для относительной интенсивности красного цвета;второй байт содержит значение для зеленого;и третий байт содержит значение для синего цвета.Старший байт должен быть нулевым.Максимальное значение для одного байта составляет 0xFF.

Чтобы создать значение цвета COLORREF, используйте макрос RGB.Чтобы извлечь отдельные значения для красного, зеленого и синего компонентов значения цвета, используйте макросы GetRValue , GetGValue и GetBValue , соответственно.

0 голосов
/ 31 января 2012

Некоторые документы, которые могут вам помочь в этом:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646912(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/ms646830(v=vs.85).aspx

Вам необходимо использовать rgbResult вашего ChooseColor.

Здесь есть пример -> http://msdn.microsoft.com/en-us/library/windows/desktop/ms646829(v=vs.85).aspx#choosing_color

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...