我测试了一下,还是发现了问题,不过应该很容易修改了。6 N/ `, d) h# ]+ a, O
. }! d5 F, k5 V$ o( _4 J
问题在于你对32bit tga图片字库还没有真正理解。
! c: y3 p) G9 c) d% t# M首先,我附上一个游戏里的32bit tga图片字库文件,你用2进制编辑器打开看一下就知道了。
8 Y: a6 a4 [4 _0 y+ p2 S. h2 K每个象素的前3个字节都是FF FF FF ,最后一个字节表示透明度,才有变化,是00-FF。
& Z/ M& \4 [( X
9 z; m% U4 n( _0 s K32bit tga图片字库其实只是反映了一个白色的字体的各个部分的透明程度,它本身不反映颜色信息。, N' V; P; N3 L: M9 X' x
那颜色从哪里来的呢?2 z6 \3 m6 x( y
颜色值其实是从游戏的配置文件里读取的,游戏把读取的颜色,比如说是黄色去替换32bit tga图片字库文件每个象素的前3个字节 FFFFFF ,然后配合最后一个字节,就在内存里生成了一张新的黄色字体的图片tga.用这张黄色字体的图片tga作为字体显示到屏幕上就得到了黄色的字体。同理,游戏的配置文件里设定的是红色的话,我们就能得到红色的字体。
! t% A3 L; K: C# q$ m/ k& h, {
" L$ ]) ^6 e- |+ a( {8 @32bit tga图片字库有点像photoshop里的遮罩的作用。
' y( X) z" v, h! B) J2 E9 U" x' K$ J3 E, ?7 J& K+ \$ L
好,明白了这些。我们回过头来看看2维码和条形码。
# w) n6 J( k( ?其实非常简单了。. e& G1 q! i6 L8 _$ [
象素只分2种,有色象素和透明象素。
" k- \. G$ @, ?0 s% i' Z
1 }! b( M6 H& ~有色象素就是 FF FF FF FF8 ?, z* r' T5 l' l' F) X
透明象素就是 FF FF FF 00
; k- _/ K! J8 O3 C7 M0 m- N+ |, z
当然,我们在识别2维码和条形码的时候也要预先知道,游戏设定了什么颜色来显示这个字体,然后才可能判断出这个2维码和条形码上面哪些才是有色点。5 {7 F( x& ?1 h9 `
( W( S0 {9 E, I6 [7 g$ |) ]& P6 z等会我还有些关于2维码的新东西要发布。
: `( p( R- Z1 y7 S1 m V# h# U, a' n% M4 u
明白了吗? |