设为首页收藏本站官方微博
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 | 只看该作者
我刚才又看了一遍你的帖子,现在我的理解是这样的,你看看对不对。
) M3 P$ c7 i% E5 G1 F/ }- E1、首先修改字体,让我们需要显示的文字等宽等高。3 W  w2 r/ N; w- x
2、然后修改要显示的文本,产生类似条码的东西。比如原来显示的Option,我们可能需要改成■ ■■■ ■4 e- H1 U, ?- r" w4 e
3、修改文字显示的位置,尽量让每个场景的文字都显示在同一个地方。- ?  c, U, s! F! v
4、另外运行一个程序,动态监测屏幕,发现类似条码的部分就去比照对码表,符合的就用DirectDraw技术将字幕覆盖原画面。
! j2 m" {3 f! }6 m, a; m& L
) I$ E7 W& e; G# j4 d基于我上述的理解,我有几点不明白的地方:6 [7 n; a! m5 J
1、方块的显示用什么字符呢?. F$ w: t" y, H& {' p
2、如果单纯是方块和空格的变化,那跟二进制差不多,需要的位数就会很长才能满足需要;8 [: J3 ~, u1 T$ ~* t
3、关于像素级二维码,我没看明白。怎么生成?
回复 支持 反对

使用道具 举报

13#
 楼主| 发表于 2009-6-4 22:26 | 只看该作者
肥牛,你真聪明!
' l$ A) R; R9 k4 g. H3 O9 x8 J你看懂了大约80%。9 R, y6 ?4 r4 ]% M" E
还有20%等我慢慢告诉你。
回复 支持 反对

使用道具 举报

14#
 楼主| 发表于 2009-6-4 22:28 | 只看该作者
引用第9楼sspking于2009-06-04 22:06发表的  :% D( V, _- y9 R; X9 U
这个事情不难,我给你写个小程式~
# n0 c) ^- ^5 p+ P4 D$ T就是取一个图片,把图片中所有的指定颜色的XY坐标集输出到TXT中对吧?
) F+ S% v$ {0 y6 Y! w. ~5 s
这个任务暂时取消了,本次ankh汉化暂时用不上这个。
回复 支持 反对

使用道具 举报

15#
 楼主| 发表于 2009-6-4 22:47 | 只看该作者
1、首先修改字体,让我们需要显示的文字等宽等高。 * s% P6 l" S( k0 s( E
理解正确
. V; t$ Z) H- U* L0 z8 j
/ {+ q& A; [. d$ Y: A2、然后修改要显示的文本,产生类似条码的东西。比如聪允镜腛ption,我们可能需要改成■ ■■■ ■ , Y" H, P$ k( @  |4 E) v
基本理解正确。
8 m7 c! E+ ?; o  v3 V. V) W条形码只用于识别屏幕下方黑色背景的字幕。
; N, Y$ G0 k9 J, w' E( C' Y& @注意图片字库有多个,就是说有多个tga. - O! o7 v" _6 h/ y- \9 w
, N' b. c+ q! f; P) D: B7 D" }( m
由于图片字库可以自己定义每个字符的宽高,我想定义2个宽高都是1个像素的字符。 ' h0 S5 F/ W+ T  X! z& M/ s
一个是有色点,一个是透明点。显示出来就是一个像素级的条形码。这个能理解吧。
4 Y# h! i3 d& b. p: a- j& V" b3 }; C( s. R0 X; f* K0 e$ a/ d
3、修改文字显示的位置,尽量让每个场景的文字都显示在同一个地方。
& @9 j- z+ O+ l6 [% O  Z. g理解正确
. F* h" i4 ?, z

3 n$ Z) E& y! G8 b. J8 T+ t9 V7 E/ ]. t9 \5 l) O8 ?& s, o# R
4、另外运行一个程序,动态监测屏幕,发现类似条码的部分就去比照对码表,符合的就用DirectDraw技术将字幕覆盖原画面。
. \" c9 j. v: R4 T' ?6 L理解正确 : D$ O8 @! }1 b* E
这个游戏用的是dx9,不是DirectDraw。
1 Z" o. x9 k: o2 b
dx9 proxy dll技术你可以再看看我发的帖子。
7 ]- b) }: N! I% `5 v% }  }$ t' {: ~% \
基于我上述的理解,我有几点不明白的地方: ; l% Y* L% g* z/ e  H5 ~
1、方块的显示用什么字符呢? ; b( C- \: ~1 q" ^8 a
这个上面解释了 9 I9 Q+ G4 H- _' G4 I
) E2 D+ b- C. M2 l+ Z
2、如果单纯是方块和空格的变化,那跟二进制差不多,需要的位数就会很长才能满足需要; ! W6 x0 X% P5 I2 v2 L7 I9 i
不错,要12-13 位,不过是像素级的,实际上很短。
& M9 W4 t% a. ?) g; U就算比较长,我的字幕写上去之前,会先画个黑色矩形上去覆盖掉。 & M9 u- }, e* v3 O+ H5 h4 x
所以不会有问题。 ! ]4 l! `5 x( E4 A

9 N) J1 [7 Q7 f) H- J, z* S3、关于像素级二维码,我没看明白。怎么生成? 6 P! O; z$ l+ l3 \1 |# Q4 F2 y
上面的都理解的话这个也不难。
& b: P! q+ y6 ?道理和条形码类似,不过二维码和条形码用的不是同一个tga。
$ c1 L. c/ E% V二维码对应屏幕中央字幕。
5 |/ O8 m; `9 d7 G* m! I/ v条形码对应屏幕底部字幕。 & E4 J1 ?: n& `: h+ V

% k! t; ]7 h6 c) @6 |& ^二维码是一个3x3 像素级的小块,这样面积最小,要知道,在屏幕中央字幕显示的时候。
% R7 N- Z' }+ c: `$ S由于有游戏背景,所以不能先画一个黑色矩形上去,所以要求二维码的面积足够小。
9 _! W) ]- ^( u+ p6 d8 _2 m7 F6 J7 t+ A5 P& s7 V; {
二维码 是一个ID 对应一个ASCII 码,再对应1个3x3 像素级的小块 " T" N9 L  l0 D& \2 m3 A; H
条形码 是一个ID 对应 12-13 个ASCII 码  再对应 12-13 个1x1 像素级的小块 ; w7 d! W/ h. A8 v6 q

7 u' q) s5 Z: a* a9 Q7 y明白了吗?
回复 支持 反对

使用道具 举报

16#
发表于 2009-6-4 22:56 | 只看该作者
我明白了...3 X6 k# l, j/ C- L+ V2 ~5 f" H+ b
不过屏幕中央是个什么概念,1024x768的标准的话, (512,384)还是?
回复 支持 反对

使用道具 举报

17#
 楼主| 发表于 2009-6-4 22:59 | 只看该作者
引用第15楼firendless于2009-06-04 22:56发表的  :
$ y, ?& \" w! A5 q* E$ L* i我明白了...4 N( J0 }% e7 B! x
不过屏幕中央是个什么概念,1024x768的标准的话, (512,384)还是?

, U) S0 J- \' T. i; c不是指屏幕的正中央,是指屏幕中部。
. c5 G( P9 d  U1 ], g7 v你看过游戏画面就知道。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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