永发信息网

我实在看不懂他这个颜色值是怎么表示的,话说是RGB(X,Y,Z) 谁能跟我说说 有图

答案:6  悬赏:80  手机版
解决时间 2021-03-05 02:48
  • 提问者网友:不爱我么
  • 2021-03-04 03:22
我实在看不懂他这个颜色值是怎么表示的,话说是RGB(X,Y,Z) 谁能跟我说说 有图
最佳答案
  • 五星知识达人网友:由着我着迷
  • 2021-03-04 04:15
RGB(X,Y,Z)只是一个宏定义,为了方便使用才这样定义的。
RGB(r,g,b)宏得到的是一个COLORREF类型的值,其实就是DWORD型的。在WINDEF.H中有这样的定义:
typedef DWORD COLORREF;
这是RGB(r,g,b)宏在WINGDI.H中的定义:
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORd)((BYTE)(g))<<8))|(((DWORd)(BYTE)(b))<<16)))

这个宏其实就是把RGB三个值组合成一个值来表示,例如RGB(64,32,128),其实就是DWORD类型的0x402080(十六进制表示)。因为64转换成十六进制是0x40,32转换成十六进制是0x20,128转换成十六进制是0x80。所以RGB(64,32,128)的的值其实就是双字节类型的0x402080,用十进制表示就是4202624。
全部回答
  • 1楼网友:野慌
  • 2021-03-04 07:18
颜色值实际上是一个long数值,RGB(r,g,b)实际是一个宏,就是把r,g,b三个短整数组合成一个long数值。因此SetPixel函数的颜色值处可以用RGB宏也可以用任意的long数值。上述程序没有问题。
  • 2楼网友:有你哪都是故乡
  • 2021-03-04 05:12
简单的说:SetPixel就是设置某个坐标的颜色值;前两个参数是坐标;后一个参数是颜色值;
注意:RGB(R,G,B)只是个宏函数,功能是把对应的色值分量转换成一个整数.程序中直接使用一个整数作为颜色值当然是可以的,但是这个颜色值由坐标决定。
  • 3楼网友:怙棘
  • 2021-03-04 04:41
rgb值用一个32位的变量组织成的:而用8个bit位表示一个颜色。从高位到低位以8bit为单位分别是红,绿,蓝,而最高的8个bit不用,置0。有误请指出
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯