我测试了一下,还是发现了问题,不过应该很容易修改了。' \' C ]. u, ^0 Q8 }5 M( P4 _
- t, S+ U) @+ `+ s3 o J% ~; b
问题在于你对32bit tga图片字库还没有真正理解。
' ?+ v, n0 \% F6 u5 q+ a首先,我附上一个游戏里的32bit tga图片字库文件,你用2进制编辑器打开看一下就知道了。2 m: }: \+ ~8 ~- C) Q
每个象素的前3个字节都是FF FF FF ,最后一个字节表示透明度,才有变化,是00-FF。, _* p+ h" m, Z z
; `$ X5 E8 m0 N! R! U _; u32bit tga图片字库其实只是反映了一个白色的字体的各个部分的透明程度,它本身不反映颜色信息。
" Q' \5 g' W$ e9 k8 Z5 u那颜色从哪里来的呢?
5 q2 ]4 u9 ?/ d6 P( `颜色值其实是从游戏的配置文件里读取的,游戏把读取的颜色,比如说是黄色去替换32bit tga图片字库文件每个象素的前3个字节 FFFFFF ,然后配合最后一个字节,就在内存里生成了一张新的黄色字体的图片tga.用这张黄色字体的图片tga作为字体显示到屏幕上就得到了黄色的字体。同理,游戏的配置文件里设定的是红色的话,我们就能得到红色的字体。: ?$ v+ d8 d# n, J; Y
( O3 T' {; f$ k' K# A32bit tga图片字库有点像photoshop里的遮罩的作用。
+ z' M1 ?6 K" M! J. z' o7 t7 N# y" Z( V4 Z
好,明白了这些。我们回过头来看看2维码和条形码。: |# g* t1 C$ |, ^& W: G; i0 v
其实非常简单了。. @: k/ U& j* x/ \! P4 t* o
象素只分2种,有色象素和透明象素。- t. @# ^, I/ Y# ~$ `
6 ^4 Z7 S1 u- K3 W+ J |3 w有色象素就是 FF FF FF FF$ A5 w& y% q# f$ b- v' ?3 c
透明象素就是 FF FF FF 00
, U' I* w4 x; ?6 W* @) |8 ]) G8 { a- A6 ]0 a0 R+ w8 C
当然,我们在识别2维码和条形码的时候也要预先知道,游戏设定了什么颜色来显示这个字体,然后才可能判断出这个2维码和条形码上面哪些才是有色点。2 W+ t, Z* m1 z# |/ K4 O
! T1 x; T/ m; m6 f9 @2 y等会我还有些关于2维码的新东西要发布。
! K: U/ Y3 J% L2 ^/ G
+ _ O# E& U, e( Q/ U. v; Z) l明白了吗? |