代码中怎样把RGB颜色值转换成16进制?
比如说RGB(255,255,255)转成16进制是0xffffff。但是有没有人可以通过标准C语言用代码实现啊~~我需要一个可以把一个16进制颜色值与RGB三个颜色值互...
比如说RGB(255,255,255)转成16进制是0xffffff。
但是有没有人可以通过标准C语言用代码实现啊~~
我需要一个可以把一个16进制颜色值与RGB三个颜色值互相转换的代码,谁来帮个忙啊
我有个函数中要传入r,g,b三个值,可我用时,只能用一个值的颜色,程序返回时还是得把那一个值转成r,g,b三个值. 展开
但是有没有人可以通过标准C语言用代码实现啊~~
我需要一个可以把一个16进制颜色值与RGB三个颜色值互相转换的代码,谁来帮个忙啊
我有个函数中要传入r,g,b三个值,可我用时,只能用一个值的颜色,程序返回时还是得把那一个值转成r,g,b三个值. 展开
4个回答
展开全部
简单的移位和按位加:
int r,g,b;
int c; // TC 用 long int;
// 如果次序是RRGGBB
c = r << 16 | g << 8 | b;
// 如果次序是BBGGRR
c = b << 16 | g << 8 | r;
---------------------------------
例如:
#include "stdio.h"
int RGB(int r,int g,int b)
{
return r << 16 | g << 8 | b;
}
void main()
{
int r,g,b,c;
r = 255; g=255; b=255;
c = RGB(r,g,b);
printf("0x%06x",c);
}
int r,g,b;
int c; // TC 用 long int;
// 如果次序是RRGGBB
c = r << 16 | g << 8 | b;
// 如果次序是BBGGRR
c = b << 16 | g << 8 | r;
---------------------------------
例如:
#include "stdio.h"
int RGB(int r,int g,int b)
{
return r << 16 | g << 8 | b;
}
void main()
{
int r,g,b,c;
r = 255; g=255; b=255;
c = RGB(r,g,b);
printf("0x%06x",c);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
MSDN中对RGB结构体的定义如下:
The RGB macro is defined as follows.
#define RGB(r, g ,b) ((DWORD) (((BYTE) (r) | \
((WORD) (g) << 8)) | \
(((DWORD) (BYTE) (b)) << 16)))
由此可见,一个DWORD体中的后三个字节分别是B,G,R;最前一个字节为零。
fun(BYTE R,BYTE G,BYTE B)
{
DWORD wValue;
wValue = RGB(R,G,B);
printf("%x", wValue);
:
:
:
//以下将DWORD转化为R,G,B
R = wValue & 0xff;
G = (wValue>>8)&0xff;
B = (wValue >>16) & 0xff;
}
The RGB macro is defined as follows.
#define RGB(r, g ,b) ((DWORD) (((BYTE) (r) | \
((WORD) (g) << 8)) | \
(((DWORD) (BYTE) (b)) << 16)))
由此可见,一个DWORD体中的后三个字节分别是B,G,R;最前一个字节为零。
fun(BYTE R,BYTE G,BYTE B)
{
DWORD wValue;
wValue = RGB(R,G,B);
printf("%x", wValue);
:
:
:
//以下将DWORD转化为R,G,B
R = wValue & 0xff;
G = (wValue>>8)&0xff;
B = (wValue >>16) & 0xff;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string RGBConvert(int r,int g,int b)
{
char r_str[3],g_str[3],b_str[3];
string result = "0x";
itoa(r,r_str,16);
itoa(g,g_str,16);
itoa(b,b_str,16);
result + = string(r_str)+string(g_str)+string(b_str);
return result;
}
没有编译过,你自己调试下
{
char r_str[3],g_str[3],b_str[3];
string result = "0x";
itoa(r,r_str,16);
itoa(g,g_str,16);
itoa(b,b_str,16);
result + = string(r_str)+string(g_str)+string(b_str);
return result;
}
没有编译过,你自己调试下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询