游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5684|回复: 9

vb颜色值和DX8关键色

[复制链接]

5

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2007-6-23 18:46:00 | 显示全部楼层 |阅读模式
发现问题:
vb中&HFF000000的值为黑颜色的十六进制值,而大家熟悉和习惯的是rgb(0,0,0)也是黑色值
但是这两个的整型值天壤之别,如果吧rgb(0,0,0)转换为十六进制则是&H000000也就是0,而同样黑色的&HFF000000的值为-16777216,那么&HFF000000中的FF是什么呢?如果大家用过DX8中的D3DCOLORARGB就明白了.这个FF是Ahpil值(VB中FF也许是饱和度,或者是亮度,或者是色调中的一个.但无法求解),是否同理呢?
试验开始:
将D3DCOLORARGB(255,0,0,0)和&HFF000000的值进行对比.结果是一样的,其实这也说明不了什么,当至少说明vb的黑色有255种,无论如何,这给DX足够了,如果大家习惯RGB(X,X,X),嫌D3DCOLORARGB(X,X,X,X)太麻烦,怎么办呢?
继续:
D3DX8.CreateTextureFromFileEx(Direct3DDevice8, File, D3DX_DEFAULT, D3DX_DEFAULT, 1, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, keycol, ByVal 0, ByVal 0)
其中KeyCol为长整型的关键色,而rgb()返回也是长整型,
解决问题:
思路出来了,将rgb值付给keycol,再将keycol转换为十六进制,在得到的值前加FF,再转换成长整型付给,这样就可以使用RGB函数来指定关键色,如果有跟我的一样的朋友,可以去试验一下
不才拙见,望各位更正

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2007-6-23 22:40:00 | 显示全部楼层

Re:vb颜色值和DX8关键色

建议LZ去看看关于绘图颜色方面的基础书籍。


在Dx8中32位长整型颜色值最高位字节为Alpha,在标准GDI中不涉及这个通道,最高位可以任意指定。(AlphaBlend函数除外)

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2007-6-23 22:44:00 | 显示全部楼层

Re:vb颜色值和DX8关键色

还有,你的“将rgb值付给keycol,再将keycol转换为十六进制,在得到的值前加FF,再转换成长整型付给,这样就可以使用RGB函数来指定关键色”

这句话说明你的编程基础和对数据在内存中的存储的理解还有点问题,需要多看看基础书。

在程序中不存在什么“将某数转换成16进制”,除非你要转换成16进制表示的字符串用于输出。

要将keycol的最高位赋FF直接使用keycol=keycol And &hFF000000 就可以实现,而不是什么加FF。

还有,很少有人在DX8中使用RGB函数的,那是GDI中使用的东西。

5

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
 楼主| 发表于 2007-6-24 09:58:00 | 显示全部楼层

Re: Re:vb颜色值和DX8关键色

sandy_zc_1: Re:vb颜色值和DX8关键色
要将keycol的最高位赋FF直接使用keycol=keycol And &hFF000000 就可以实现

谢谢垂教
自学的.基础太差,唉,看来又要在基础上加强点杀气,

5

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
 楼主| 发表于 2007-6-24 10:01:00 | 显示全部楼层

Re:vb颜色值和DX8关键色

如果论坛多点sandy_zc_1老兄,就好了,让人受益

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2007-6-24 10:04:00 | 显示全部楼层

Re: Re:vb颜色值和DX8关键色

sandy_zc_1: Re:vb颜色值和DX8关键色

要将keycol的最高位赋FF直接使用keycol=keycol And &hFF000000 就可以实现


搞错了,置1应该是用Or才对吧 [em10]
keycol=keycol Or &hFF000000
置0才应该用And,keycol=keycol And &hFFFFFF

5

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
 楼主| 发表于 2007-6-24 10:14:00 | 显示全部楼层

Re:vb颜色值和DX8关键色

刚才试验了一下,用and的值确实为0
psic兄的方法正确
太感谢了

5

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
 楼主| 发表于 2007-6-24 10:23:00 | 显示全部楼层

Re:vb颜色值和DX8关键色

D3DX8.CreateTextureFromFileEx(Direct3DDevice8, File, D3DX_DEFAULT, D3DX_DEFAULT, 1, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, keycol or &HFF000000, ByVal 0, ByVal 0)
现在用关键色方便多了,谢谢

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2007-6-24 20:42:00 | 显示全部楼层

Re: Re: Re:vb颜色值和DX8关键色

psic: Re: Re:vb颜色值和DX8关键色



搞错了,置1应该是用Or才对吧 [em10]
keycol=keycol Or &hFF000000
置0才应该用And,keycol=keyc...



太粗心了,位运算写错了,看来我也得检讨了呵呵。

0

主题

45

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2007-7-4 09:53:00 | 显示全部楼层

Re:vb颜色值和DX8关键色

关注LZ的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 23:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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