|
|
发现问题:
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函数来指定关键色,如果有跟我的一样的朋友,可以去试验一下
不才拙见,望各位更正 |
|