设为首页收藏本站官方微博
12
返回列表 发新帖

【汉化任务简报】#27 图片交集像素抽出程序

[复制链接]
楼主: shane007
打印 上一主题 下一主题

【汉化任务简报】#27 图片交集像素抽出程序

11#
发表于 2009-6-4 22:09 | 只看该作者
这个帖子回复的人不少么,我放一个C code
  1. public   void   DrawXORRectangle(   Graphics   grp,
  2.                                                             int   X1,   int   Y1,   int   X2,   int   Y2   )
  3. {
  4. //   Extract   the   Win32   HDC   from   the   Graphics   object   supplied.
  5. IntPtr   hdc   =   grp.GetHdc();
  6. //   Create   a   pen   with   a   dotted   style   to   draw   the   border   of   the
  7. //   rectangle.
  8. IntPtr   gdiPen   =   CreatePen(   penStyle,
  9.                             1,   BLACK_PEN   );
  10. //   Set   the   ROP   cdrawint   mode   to   XOR.
  11. SetROP2(   hdc,   R2_XORPEN   );
  12. //   Select   the   pen   into   the   device   context.
  13. IntPtr   oldPen   =   SelectObject(   hdc,   gdiPen   );
  14. //   Create   a   stock   NULL_BRUSH   brush   and   select   it   into   the   device
  15. //   context   so   that   the   rectangle   isn 't   filled.
  16. IntPtr   oldBrush   =   SelectObject(   hdc,
  17.                                           GetStockObject(   NULL_BRUSH   )   );
  18. //   Now   XOR   the   hollow   rectangle   on   the   Graphics   object   with
  19. //   a   dotted   outline.
  20. Rectangle(   hdc,   X1,   Y1,   X2,   Y2   );
  21. //   Put   the   old   stuff   back   where   it   was.
  22. SelectObject(   hdc,   oldBrush   );   //   no   need   to   delete   a   stock   object
  23. SelectObject(   hdc,   oldPen   );
  24. DeleteObject(   gdiPen   ); //   but   we   do   need   to   delete   the   pen
  25. //   Return   the   device   context   to   Windows.
  26. grp.ReleaseHdc(   hdc   );
  27. }
复制代码
回复 支持 反对

使用道具 举报

12#
发表于 2009-6-4 22:21 | 只看该作者
我刚才又看了一遍你的帖子,现在我的理解是这样的,你看看对不对。% C* x2 \. Z8 k0 R
1、首先修改字体,让我们需要显示的文字等宽等高。( M* }! K! ~- l: Q2 z# v
2、然后修改要显示的文本,产生类似条码的东西。比如原来显示的Option,我们可能需要改成■ ■■■ ■
5 h$ c. U; r5 B$ K0 y$ _* _3、修改文字显示的位置,尽量让每个场景的文字都显示在同一个地方。3 e+ [) W+ j9 M6 r; r7 T5 v7 I
4、另外运行一个程序,动态监测屏幕,发现类似条码的部分就去比照对码表,符合的就用DirectDraw技术将字幕覆盖原画面。
% h0 U* v% j. b( @# {; q; f" F7 T- @" y* j% l' {/ ]* a5 ^
基于我上述的理解,我有几点不明白的地方:) y9 y$ N6 Z% ?: R
1、方块的显示用什么字符呢?1 m6 q9 K7 \% N1 m$ t/ g! y1 r2 U
2、如果单纯是方块和空格的变化,那跟二进制差不多,需要的位数就会很长才能满足需要;
$ o" c% z3 R& O" |: x! h8 C0 _, _2 }3、关于像素级二维码,我没看明白。怎么生成?
回复 支持 反对

使用道具 举报

13#
 楼主| 发表于 2009-6-4 22:26 | 只看该作者
肥牛,你真聪明!
( ]/ V8 h5 [* B1 @" b: v' o你看懂了大约80%。
8 Z5 }+ T' o% \6 |5 x+ y8 K  o还有20%等我慢慢告诉你。
回复 支持 反对

使用道具 举报

14#
 楼主| 发表于 2009-6-4 22:28 | 只看该作者
引用第9楼sspking于2009-06-04 22:06发表的  :" j& {8 [  J/ N# U0 k
这个事情不难,我给你写个小程式~
" L- t  i% L/ s0 u/ i就是取一个图片,把图片中所有的指定颜色的XY坐标集输出到TXT中对吧?
; E/ ~1 f3 ?% N0 u% c& S; P
这个任务暂时取消了,本次ankh汉化暂时用不上这个。
回复 支持 反对

使用道具 举报

15#
 楼主| 发表于 2009-6-4 22:47 | 只看该作者
1、首先修改字体,让我们需要显示的文字等宽等高。
3 Z1 y$ e% A( v' s& Z理解正确
; m3 e5 M) \* S5 c, }; ^8 y# S. _8 ~
2、然后修改要显示的文本,产生类似条码的东西。比如聪允镜腛ption,我们可能需要改成■ ■■■ ■
/ A+ c- l) R: @6 k2 Q: D+ F+ ?基本理解正确。
( V/ h( {+ k. H! v3 T/ ?9 K$ }条形码只用于识别屏幕下方黑色背景的字幕。 . n( y, P! T1 W9 o4 K$ `
注意图片字库有多个,就是说有多个tga.
; X8 r  I+ ^' p+ O2 I- x3 P- E% i  J9 Q9 T7 y! G: I( D1 j
由于图片字库可以自己定义每个字符的宽高,我想定义2个宽高都是1个像素的字符。
) U  M. T+ S, B2 a: o3 p* R" H一个是有色点,一个是透明点。显示出来就是一个像素级的条形码。这个能理解吧。 & B& T1 f  f) B& Z, |0 w
) C# `) T1 e; u6 a- I, e5 e. V/ z' h( ]
3、修改文字显示的位置,尽量让每个场景的文字都显示在同一个地方。 9 L8 \6 m9 e! T! g: U9 Z
理解正确
+ }6 M8 ?# ~) n2 S

2 U' `# h& j- F! `8 R+ k. y7 P3 B' T' a- Y: k; F
4、另外运行一个程序,动态监测屏幕,发现类似条码的部分就去比照对码表,符合的就用DirectDraw技术将字幕覆盖原画面。 + V- z; t" H  ]+ D1 \
理解正确 % n- h1 G. q: d  p8 y" o# K: Z
这个游戏用的是dx9,不是DirectDraw。
# E! Y5 i" Q% U- C* p/ E
dx9 proxy dll技术你可以再看看我发的帖子。 - _- L3 S; J9 [& v7 s. W7 ^
% J8 j9 ~; ?; {6 P; q6 X1 z( m
基于我上述的理解,我有几点不明白的地方:
) d. e" [) N9 v( T1、方块的显示用什么字符呢? 0 E! K% @0 k- v' z! ~9 a; F2 m
这个上面解释了 % t3 t8 E4 t& Y% T9 s: n1 j% O2 {

: m: ?) {2 |& E0 {2、如果单纯是方块和空格的变化,那跟二进制差不多,需要的位数就会很长才能满足需要;
1 A& z/ e+ T7 ~8 C$ I9 A- ~不错,要12-13 位,不过是像素级的,实际上很短。 & H# }+ Q; e% M5 k5 l6 J
就算比较长,我的字幕写上去之前,会先画个黑色矩形上去覆盖掉。 4 i3 Q# m) z: |7 t* V3 X; T
所以不会有问题。
+ e3 |  h! L+ \6 d& Q5 `4 ]6 L9 ~$ h" e) o, A
3、关于像素级二维码,我没看明白。怎么生成? 9 k1 |( D* F, u7 w  D; v
上面的都理解的话这个也不难。 7 s! p# s+ g2 r- D
道理和条形码类似,不过二维码和条形码用的不是同一个tga。
, ?, T8 m: e% J' C$ w. c二维码对应屏幕中央字幕。 * i' B2 K5 c4 ^$ K+ {% D/ w
条形码对应屏幕底部字幕。
8 Y- n* V, g6 t2 b/ Q7 [# K5 G6 h( D% Y' s$ \2 T
二维码是一个3x3 像素级的小块,这样面积最小,要知道,在屏幕中央字幕显示的时候。 $ i; ~) c/ y8 a9 C6 s
由于有游戏背景,所以不能先画一个黑色矩形上去,所以要求二维码的面积足够小。 9 S3 i/ v3 F* `) U2 u

' ^* v' @6 i+ C+ n* N$ J& b二维码 是一个ID 对应一个ASCII 码,再对应1个3x3 像素级的小块 + K" e3 I+ b: f
条形码 是一个ID 对应 12-13 个ASCII 码  再对应 12-13 个1x1 像素级的小块
% n+ G1 L; y  b4 y5 Q
$ P; K8 K4 ]) L2 Y' o. Z# g  S明白了吗?
回复 支持 反对

使用道具 举报

16#
发表于 2009-6-4 22:56 | 只看该作者
我明白了...
  z& h0 v" J% Y$ B$ U5 k不过屏幕中央是个什么概念,1024x768的标准的话, (512,384)还是?
回复 支持 反对

使用道具 举报

17#
 楼主| 发表于 2009-6-4 22:59 | 只看该作者
引用第15楼firendless于2009-06-04 22:56发表的  :
4 S: ?7 g# I8 N- q! Z6 |5 ^5 \" }我明白了.... J- J8 n( _+ |9 {9 X
不过屏幕中央是个什么概念,1024x768的标准的话, (512,384)还是?
  K4 R2 _  u) A  q+ T% C
不是指屏幕的正中央,是指屏幕中部。* ]4 e2 |# H7 R. H+ p- d1 d" B& T
你看过游戏画面就知道。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表