设为首页收藏本站官方微博
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 | 只看该作者
我刚才又看了一遍你的帖子,现在我的理解是这样的,你看看对不对。
. g* V3 @! f# \. L5 c1、首先修改字体,让我们需要显示的文字等宽等高。
/ _* W3 p& b, j* s2、然后修改要显示的文本,产生类似条码的东西。比如原来显示的Option,我们可能需要改成■ ■■■ ■
2 y4 o# f4 p7 h5 M3、修改文字显示的位置,尽量让每个场景的文字都显示在同一个地方。
/ A$ o0 R* y$ y4、另外运行一个程序,动态监测屏幕,发现类似条码的部分就去比照对码表,符合的就用DirectDraw技术将字幕覆盖原画面。
2 N" Y# n3 e; [: `1 S4 B7 _8 f6 {4 W/ N! H/ Z1 |
基于我上述的理解,我有几点不明白的地方:2 u# e  k& z! |' F) @9 W
1、方块的显示用什么字符呢?9 H- E2 h5 `7 k* I1 M" q
2、如果单纯是方块和空格的变化,那跟二进制差不多,需要的位数就会很长才能满足需要;+ f6 e5 h: Y/ }" r5 l. i
3、关于像素级二维码,我没看明白。怎么生成?
回复 支持 反对

使用道具 举报

13#
 楼主| 发表于 2009-6-4 22:26 | 只看该作者
肥牛,你真聪明!
, P+ a& Z! y, u( q& D你看懂了大约80%。
* y6 ]. v5 b9 W" C; l还有20%等我慢慢告诉你。
回复 支持 反对

使用道具 举报

14#
 楼主| 发表于 2009-6-4 22:28 | 只看该作者
引用第9楼sspking于2009-06-04 22:06发表的  :
" U6 |7 y: R/ I( k这个事情不难,我给你写个小程式~% O. Z) c8 q8 Z9 z' p- L: g  a  M
就是取一个图片,把图片中所有的指定颜色的XY坐标集输出到TXT中对吧?
3 n+ V6 D7 B4 m  C
这个任务暂时取消了,本次ankh汉化暂时用不上这个。
回复 支持 反对

使用道具 举报

15#
 楼主| 发表于 2009-6-4 22:47 | 只看该作者
1、首先修改字体,让我们需要显示的文字等宽等高。 1 j) L) d7 x1 v. r- m- \' I
理解正确 0 L0 y/ w: e1 e0 i& S

* G/ ]4 N4 |4 u: f1 W  B9 _2、然后修改要显示的文本,产生类似条码的东西。比如聪允镜腛ption,我们可能需要改成■ ■■■ ■
' K' M& L/ l( _2 x: O  Z$ `) V基本理解正确。 ) A0 b; w9 D/ x# f* N1 j
条形码只用于识别屏幕下方黑色背景的字幕。 % Z. v: c/ E5 Y& J5 |0 d9 N! x
注意图片字库有多个,就是说有多个tga.
. p5 L% ~1 q! Y, v1 E: S
! p. J- K9 b, i  f由于图片字库可以自己定义每个字符的宽高,我想定义2个宽高都是1个像素的字符。 3 k6 t& P1 L& [" D9 P2 Q
一个是有色点,一个是透明点。显示出来就是一个像素级的条形码。这个能理解吧。 , e. B! |$ G- o  V  \( F0 @4 Z

9 e2 G* x& k3 q3、修改文字显示的位置,尽量让每个场景的文字都显示在同一个地方。
+ j) `5 }/ p: ~5 o! c5 P理解正确
2 U& M6 z' ]& i( Y0 ^3 J/ M4 P
+ t6 [7 q9 Y8 s( y6 y1 D, q2 k
* M  u" t' c' p; i
4、另外运行一个程序,动态监测屏幕,发现类似条码的部分就去比照对码表,符合的就用DirectDraw技术将字幕覆盖原画面。 0 r9 M7 }& w$ q' S
理解正确 9 C1 h  {5 O- q; J0 ^4 v: N
这个游戏用的是dx9,不是DirectDraw。
* x$ z! T+ D0 t% B$ V" u, k( ]
dx9 proxy dll技术你可以再看看我发的帖子。
# }2 v  m" l7 e/ I+ n& l" @: Q. Z$ X! ^4 Y
基于我上述的理解,我有几点不明白的地方: # m2 q4 y) a2 N1 p
1、方块的显示用什么字符呢? ) D1 V1 s! G( b5 Z, I, ^% x
这个上面解释了
" A; j* `2 m  s- ~' m! d% s7 v! N  x/ y( G6 ?
2、如果单纯是方块和空格的变化,那跟二进制差不多,需要的位数就会很长才能满足需要; / D8 S1 C& D9 ]6 {
不错,要12-13 位,不过是像素级的,实际上很短。
$ V( }* E7 d- K  }  n$ K, A. y3 P. s# p就算比较长,我的字幕写上去之前,会先画个黑色矩形上去覆盖掉。 6 K# p8 d; y* H1 [* t* |4 F) ], w
所以不会有问题。
" D6 M& T% e9 }- `9 w$ r) p' u: [. X7 m
3、关于像素级二维码,我没看明白。怎么生成? * s3 F6 J9 r5 X6 r' T( N4 k
上面的都理解的话这个也不难。 6 B# [3 b8 K. N4 T% B+ r; {0 t5 l
道理和条形码类似,不过二维码和条形码用的不是同一个tga。
9 N5 t8 D5 v+ b$ p2 |二维码对应屏幕中央字幕。
; i3 X! l, r( l& a条形码对应屏幕底部字幕。 $ w" G0 C' l+ J1 K, u, Z$ A2 I
& g2 q: r1 X! C1 {1 Y- i/ d
二维码是一个3x3 像素级的小块,这样面积最小,要知道,在屏幕中央字幕显示的时候。
( T3 K  z1 W3 }. \由于有游戏背景,所以不能先画一个黑色矩形上去,所以要求二维码的面积足够小。 3 S" x1 q- Q& J) y

! M5 c( v+ o3 E; \$ b: @0 Q7 C. ^二维码 是一个ID 对应一个ASCII 码,再对应1个3x3 像素级的小块
+ a5 M7 U8 O* l& j% o/ ]条形码 是一个ID 对应 12-13 个ASCII 码  再对应 12-13 个1x1 像素级的小块 ; m7 Y$ o1 h( {$ K

; c, K  `; l4 E2 S: }" ]明白了吗?
回复 支持 反对

使用道具 举报

16#
发表于 2009-6-4 22:56 | 只看该作者
我明白了...$ ~; P! J7 e1 |8 X! G
不过屏幕中央是个什么概念,1024x768的标准的话, (512,384)还是?
回复 支持 反对

使用道具 举报

17#
 楼主| 发表于 2009-6-4 22:59 | 只看该作者
引用第15楼firendless于2009-06-04 22:56发表的  :, ?0 h$ P+ f# o1 g4 \5 {9 g& N! W0 x
我明白了...
" ~3 q; Y6 x/ u不过屏幕中央是个什么概念,1024x768的标准的话, (512,384)还是?
* Y- K" s6 M  g! n0 k
不是指屏幕的正中央,是指屏幕中部。
* X  ~$ C+ f; @你看过游戏画面就知道。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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