我测试了一下,还是发现了问题,不过应该很容易修改了。- ]- e; P1 m5 T% Z5 _6 `
8 F/ F* U! B; G* i; H
问题在于你对32bit tga图片字库还没有真正理解。
* O; X! b! i' N2 v( U8 Q首先,我附上一个游戏里的32bit tga图片字库文件,你用2进制编辑器打开看一下就知道了。
' l* A4 M, P5 V! z: Y/ ], ~每个象素的前3个字节都是FF FF FF ,最后一个字节表示透明度,才有变化,是00-FF。
) |7 L% L" ~9 s4 A4 f
0 [* o& D! Q# ?0 y32bit tga图片字库其实只是反映了一个白色的字体的各个部分的透明程度,它本身不反映颜色信息。
# K' P' p0 P {$ {8 h4 ~- e7 b J; O, L那颜色从哪里来的呢?
# E! ]7 R' Y0 G- J颜色值其实是从游戏的配置文件里读取的,游戏把读取的颜色,比如说是黄色去替换32bit tga图片字库文件每个象素的前3个字节 FFFFFF ,然后配合最后一个字节,就在内存里生成了一张新的黄色字体的图片tga.用这张黄色字体的图片tga作为字体显示到屏幕上就得到了黄色的字体。同理,游戏的配置文件里设定的是红色的话,我们就能得到红色的字体。
- z" e1 [8 S& i k8 N3 l5 t$ H3 |( B
32bit tga图片字库有点像photoshop里的遮罩的作用。
) K; o4 y8 [9 G- F3 L- F r
$ t M5 F6 L9 u) l* O0 R好,明白了这些。我们回过头来看看2维码和条形码。6 U5 M' P0 C$ T" i, M) I
其实非常简单了。
, Y7 _) d, I/ f: ?" B' N象素只分2种,有色象素和透明象素。, z5 ?8 j: m$ R1 [# O7 ^& j5 f
0 g- j0 k; R. X+ ?
有色象素就是 FF FF FF FF- L6 T, ]; B3 g) t
透明象素就是 FF FF FF 00
* R/ H, {% f2 n' B
f- Q3 {$ m2 D W t D/ ~' L& y2 ?当然,我们在识别2维码和条形码的时候也要预先知道,游戏设定了什么颜色来显示这个字体,然后才可能判断出这个2维码和条形码上面哪些才是有色点。
6 e% O. b) c( u9 k0 I
- \* }3 M- L r& b4 ]等会我还有些关于2维码的新东西要发布。
0 u! i# Z/ d. S+ Y2 E/ b' i B0 z6 \, Q+ _) d, s' V r
明白了吗? |