游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5614|回复: 10

请教

[复制链接]

21

主题

78

帖子

103

积分

注册会员

Rank: 2

积分
103
发表于 2003-8-13 11:55:00 | 显示全部楼层 |阅读模式
RGB(x,x,x) 的返回值是怎样计算的?

6

主题

43

帖子

47

积分

注册会员

Rank: 2

积分
47
QQ
发表于 2003-8-13 12:27:00 | 显示全部楼层

Re:请教

怎样计算?
你看它的定义呀......(-.-!)

21

主题

78

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2003-8-13 12:52:00 | 显示全部楼层

Re: Re:请教

我找不到, 快告我一下, 急用!

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20381
发表于 2003-8-13 13:01:00 | 显示全部楼层

Re:请教

这个应该是Windows API里面的一个宏定义,MSDN里面应该会有介绍的。

21

主题

78

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2003-8-13 13:19:00 | 显示全部楼层

Re:请教

还是找不到, 到底怎么算?

1

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2003-8-13 19:33:00 | 显示全部楼层

Re:请教

找不到?我帮你找。
RGB
The RGB macro selects a red, green, blue (RGB) color based on the arguments supplied and the color capabilities of the output device.

COLORREF RGB(
  BYTE bRed,    // red component of color
  BYTE bGreen,  // green component of color
  BYTE bBlue    // blue component of color
);

Parameters
cRed
Specifies the intensity of the red color.
cGreen
Specifies the intensity of the green color.
cBlue
Specifies the intensity of the blue color.
Return Values
The return value is the resultant RGB color.

Remarks
The intensity for each argument is in the range 0 through 255. If all three intensities are zero, the result is black. If all three intensities are 255, the result is white.

For information about using color values in a color palette, see the descriptions of the PALETTEINDEX and PALETTERGB macros.

The RGB macro is defined as follows:

#define RGB(r, g ,b)  ((DWORD) (((BYTE) (r) | \
    ((WORD) (g) << 8)) | \
    (((DWORD) (BYTE) (b)) << 16)))


QuickInfo
  Windows NT: Requires version 3.1 or later.
  Windows: Requires Windows 95 or later.
  Windows CE: Requires version 1.0 or later.
  Header: Declared in wingdi.h.

See Also
Colors Overview, Color Macros, PALETTEINDEX, PALETTERGB

红色的那一段!

21

主题

78

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2003-8-13 23:57:00 | 显示全部楼层

Re:请教

多谢了, 可惜我看不懂.
是不是这样啊?
RGB(R,G,B)=R*65536+G*256+B

21

主题

78

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2003-8-14 00:06:00 | 显示全部楼层

Re:请教

偶在C++项目中执行了一下:
#define RGB(r, g ,b) ((DWORD) (((BYTE) (r) | ((WORD) (g) << 8)) | (((DWORD) (BYTE) (b)) << 16)))

好像是 b*65536+g*256+r

1

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2003-8-14 09:25:00 | 显示全部楼层

Re: Re:请教

rufi: Re:请教

偶在C++项目中执行了一下:
#define RGB(r, g ,b) ((DWORD) (((BYTE) (r) | ((WORD) (g) << 8)) | ((...


RGB返回的是一个DWORD ,其中红色(r)占的第0位到7位,绿色占的是8位到15位,蓝色占的是16位到23位
通过这个宏得到的一个32位数应该是如下的形式

00000000BBBBBBBBGGGGGGGGRRRRRRRR

<<在这里就是移位的意思。 [em16] [em16]

21

主题

78

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2003-8-14 09:40:00 | 显示全部楼层

Re: Re: Re:请教

错了, 应该是: 00000000BBBBBBBBGGGGGGGGRRRRRRRR


也就是: B*65536+G*256+R
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-12-4 01:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表