我测试了一下,还是发现了问题,不过应该很容易修改了。: m# d) Y( g1 }- M
) O2 C- q4 S. _
问题在于你对32bit tga图片字库还没有真正理解。1 Z/ w1 l+ K. L4 f4 h; [
首先,我附上一个游戏里的32bit tga图片字库文件,你用2进制编辑器打开看一下就知道了。
& N6 u2 O" e9 p2 n' R3 e每个象素的前3个字节都是FF FF FF ,最后一个字节表示透明度,才有变化,是00-FF。/ H4 {6 V3 e* y( h6 H. w. f
* E/ k6 p% t, ]6 D F+ N2 e32bit tga图片字库其实只是反映了一个白色的字体的各个部分的透明程度,它本身不反映颜色信息。
( w' [, S7 Y3 ]9 Q; S那颜色从哪里来的呢?
: {: V7 l2 H8 |. e- h2 @颜色值其实是从游戏的配置文件里读取的,游戏把读取的颜色,比如说是黄色去替换32bit tga图片字库文件每个象素的前3个字节 FFFFFF ,然后配合最后一个字节,就在内存里生成了一张新的黄色字体的图片tga.用这张黄色字体的图片tga作为字体显示到屏幕上就得到了黄色的字体。同理,游戏的配置文件里设定的是红色的话,我们就能得到红色的字体。3 D4 ^! T; ?! H1 c0 K* ] d, V2 X
/ o( v% k% k: w- B$ N" ?32bit tga图片字库有点像photoshop里的遮罩的作用。9 E! _6 M" E d% A
1 n. t$ v6 p/ T; f7 D好,明白了这些。我们回过头来看看2维码和条形码。
1 w1 w0 {9 Q7 j2 u2 U# x( R其实非常简单了。! Y5 P- M' ?; y
象素只分2种,有色象素和透明象素。+ K) e# g8 J; V6 S+ H% {4 M- Y" h
# |* j! n0 Z9 r0 ^
有色象素就是 FF FF FF FF/ Q, \4 Y7 ^: h, t
透明象素就是 FF FF FF 00
' E+ m' A7 w1 c2 t7 ?1 i
: J' x+ m9 V8 J, Y% N% B) o当然,我们在识别2维码和条形码的时候也要预先知道,游戏设定了什么颜色来显示这个字体,然后才可能判断出这个2维码和条形码上面哪些才是有色点。" X2 r: r; p4 {/ Q. u' R- [
1 V; h! b9 `, Z# ^8 D& s
等会我还有些关于2维码的新东西要发布。
: ~) @" P3 P, p6 q
. k- q" K! Q0 l( b( x5 N- L! f# F+ V明白了吗? |