十六进制颜色值和ARGB颜色值的转换

来源:互联网 发布:plc编程和c 编辑:程序博客网 时间:2024/04/30 07:48
 

#include <stdio.h>

typedef struct ARGB{
int alpha;
int red;
int green;
int blue;
}color, *pcolor;

//将十六进制转化为ARGB
color  hex_to_argb( int color_hex)
{
color col = {0};
col.alpha = ((color_hex >> 24) & 0xFF);
col.red = ((color_hex >> 16) & 0xFF);
col.green = ((color_hex >> 8) & 0xFF);
col.blue = (color_hex & 0xFF);
return col;
}

//将ARGB转化为十六进制
int argb_to_hex(color col)
{
        return (col.alpha << 24 | col.red << 16 | col.green <<8 | col.blue);
}

int main(int argc, char* argv[])
{
 //初始化col
        color col = {255, 0, 255, 0};
 //将col转化为十六进制
        int hex_color = argb_to_hex(col);
        printf("color of hex is: %x\n", hex_color);

 //将col清空
        col.alpha = 0;
        col.red = 0;
        col.green = 0;
        col.blue = 0;
 //将十六进制转化为ARGB
        col = hex_to_argb(hex_color);
        printf("a is: %d r is: %d g is: %d b is:%d\n", col.alpha, col.red, col.green, col.blue);

        return 0;
}

原创粉丝点击