游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3097|回复: 5

求助windows16位模式下的颜色取值方法~

[复制链接]

13

主题

62

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2003-9-14 04:02:00 | 显示全部楼层 |阅读模式
    现在32位模式已经能够正常取到Surface上某一坐标点的RGB颜色值,可是16位和32位差别很大,望知情者告知,感激不尽。。最好有例子。。

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20381
发表于 2003-9-14 14:22:00 | 显示全部楼层

Re:求助windows16位模式下的颜色取值方法~

你具体出现什么样的问题? 16bit的色彩色彩排列不同于32bit,可能这些导致你获取色彩的错误。

13

主题

62

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2003-9-17 17:08:00 | 显示全部楼层

Re:求助windows16位模式下的颜色取值方法~

具体情况就是报错了,
我知道16位模式通常都是565格式,24位是R8G8B8, 而32位是A8R8G8B8格式,8位的指针位移很好做到,但我实在不知道分别移动5、6、5位要怎样做到,或许有其他的方法?

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20381
发表于 2003-9-17 17:16:00 | 显示全部楼层

Re:求助windows16位模式下的颜色取值方法~

11111 000000 11111

<< 5
>> 10
就能取得中间"000000"的值。

<< 11
>> 11
取得后面"11111"的值。

>> 11
取得前面"11111"的值。

还有可以通过与、异或等操作也能获取出来。

21

主题

111

帖子

126

积分

注册会员

Rank: 2

积分
126
QQ
发表于 2003-9-22 09:34:00 | 显示全部楼层

Re:求助windows16位模式下的颜色取值方法~

以R5G6B5为例:

LONG iR; //R
LONG iG; //G
WORD iB; //B
BYTE* pDstT; //指针
*(WORD*)pDstT  = (WORD)( ( (iB>>3) & 0x1f ) <<  0 );
*(WORD*)pDstT |= (WORD)( ( (iG>>2) & 0x3f ) <<  5 );
*(WORD*)pDstT |= (WORD)( ( ( iR>>3) & 0x1f ) << 11 );
pDstT += 2;

13

主题

62

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2003-9-22 15:52:00 | 显示全部楼层

Re:求助windows16位模式下的颜色取值方法~

哇感谢!
我试试看去~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-25 15:19

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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