设为首页收藏本站官方微博
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 | 只看该作者
我刚才又看了一遍你的帖子,现在我的理解是这样的,你看看对不对。5 Q4 M! t; H, |2 {
1、首先修改字体,让我们需要显示的文字等宽等高。
* g4 ?# ]& e5 w: j2、然后修改要显示的文本,产生类似条码的东西。比如原来显示的Option,我们可能需要改成■ ■■■ ■5 m  I& `! `0 _* u4 l' |" z, U: {8 r) G
3、修改文字显示的位置,尽量让每个场景的文字都显示在同一个地方。
9 K" f5 \# M! @5 J* z, c4、另外运行一个程序,动态监测屏幕,发现类似条码的部分就去比照对码表,符合的就用DirectDraw技术将字幕覆盖原画面。9 n4 j' D) Z+ j8 ~

7 P1 Z$ J- S; A; A" s- ~/ b基于我上述的理解,我有几点不明白的地方:
% a  `: Q5 i' M& B- o" X4 e1、方块的显示用什么字符呢?
) l: p. t  A  F8 a7 }# v8 h2、如果单纯是方块和空格的变化,那跟二进制差不多,需要的位数就会很长才能满足需要;
3 ?6 P( {3 C6 i; I9 ?3、关于像素级二维码,我没看明白。怎么生成?
回复 支持 反对

使用道具 举报

13#
 楼主| 发表于 2009-6-4 22:26 | 只看该作者
肥牛,你真聪明!
; e) H/ }8 v* t0 Z" T3 R9 g你看懂了大约80%。
0 Q0 \$ K( S$ ^+ L- k* P还有20%等我慢慢告诉你。
回复 支持 反对

使用道具 举报

14#
 楼主| 发表于 2009-6-4 22:28 | 只看该作者
引用第9楼sspking于2009-06-04 22:06发表的  :
) a6 }$ D. G+ A9 v7 o9 R4 [这个事情不难,我给你写个小程式~3 o6 t4 U" ^! V5 p' ^% \
就是取一个图片,把图片中所有的指定颜色的XY坐标集输出到TXT中对吧?
# N! T( u; p5 |, s5 r' M0 F
这个任务暂时取消了,本次ankh汉化暂时用不上这个。
回复 支持 反对

使用道具 举报

15#
 楼主| 发表于 2009-6-4 22:47 | 只看该作者
1、首先修改字体,让我们需要显示的文字等宽等高。
6 p$ D( O( ^+ ?理解正确
' e$ j5 a& v* t$ o( ]( }  d# x+ Z  E
2、然后修改要显示的文本,产生类似条码的东西。比如聪允镜腛ption,我们可能需要改成■ ■■■ ■ % w; o7 [0 y/ r, Y* f0 ?
基本理解正确。 # u& d/ B$ s8 ?( Z# Z
条形码只用于识别屏幕下方黑色背景的字幕。 7 U4 x5 g$ g, d* `- F
注意图片字库有多个,就是说有多个tga.
6 C% `' \" R5 d' o8 L/ D" G6 `
# x1 n7 H$ _1 R" D由于图片字库可以自己定义每个字符的宽高,我想定义2个宽高都是1个像素的字符。 $ _: [7 |3 X$ j( ^+ H
一个是有色点,一个是透明点。显示出来就是一个像素级的条形码。这个能理解吧。
) g( F* u+ x7 \3 G& P
( @, j1 Z; r# d: Z+ f6 q' l3、修改文字显示的位置,尽量让每个场景的文字都显示在同一个地方。
5 R8 d3 U4 B1 `, I' }, N理解正确
' f# O8 @7 S6 N. j# F  O! o. M" o

. z. H7 B) l  ^: D2 z0 L# i: @5 i
4、另外运行一个程序,动态监测屏幕,发现类似条码的部分就去比照对码表,符合的就用DirectDraw技术将字幕覆盖原画面。
/ T$ U1 q3 O  e8 V* t7 ?. w; t理解正确 6 `9 r% B. l2 m! {5 I$ ~& @
这个游戏用的是dx9,不是DirectDraw。

9 m2 D& f5 [! I. Kdx9 proxy dll技术你可以再看看我发的帖子。 # S0 T+ Y2 b' D% r) X& X* H8 Q9 v
) e9 U$ {! f2 C
基于我上述的理解,我有几点不明白的地方:
! ?, x7 q4 s5 E! e1 I9 q1、方块的显示用什么字符呢? : ]- B5 ^7 L% Q- t
这个上面解释了
8 O# Y$ n$ u* i; e! S4 `! {/ S4 n' B$ f4 Y% h
2、如果单纯是方块和空格的变化,那跟二进制差不多,需要的位数就会很长才能满足需要; . ?9 D4 G& g1 e( x: r9 J+ y/ R
不错,要12-13 位,不过是像素级的,实际上很短。
+ I6 C, }9 |" f" }就算比较长,我的字幕写上去之前,会先画个黑色矩形上去覆盖掉。
9 ?: [) [) u  f: V& b% v+ k/ t, C所以不会有问题。 8 P& S9 @$ X# z3 y
. n" B% j$ Y) ~- e$ V& W
3、关于像素级二维码,我没看明白。怎么生成?
" v2 U" n9 ^& Y: w! l上面的都理解的话这个也不难。 1 q5 }; V% t* i) r' ?3 i8 p
道理和条形码类似,不过二维码和条形码用的不是同一个tga。
* k; @6 P/ I2 y0 a二维码对应屏幕中央字幕。
0 K5 w7 C+ l8 z& P! p+ W5 F' T条形码对应屏幕底部字幕。 " q+ l& P# @6 `  Y. r' S

3 t- f# \* i: R4 {& G二维码是一个3x3 像素级的小块,这样面积最小,要知道,在屏幕中央字幕显示的时候。 5 y2 x0 G& z" v# R+ V6 ]
由于有游戏背景,所以不能先画一个黑色矩形上去,所以要求二维码的面积足够小。 % k6 b% m7 h: O+ m: R. ?

6 O$ P! i3 h1 A" e% {4 x/ g二维码 是一个ID 对应一个ASCII 码,再对应1个3x3 像素级的小块 ! T; e8 c% y. [# F1 G- {0 T$ N
条形码 是一个ID 对应 12-13 个ASCII 码  再对应 12-13 个1x1 像素级的小块 5 m4 C6 X: a1 ~: ?7 |

0 D# C( n0 d. [9 R7 l明白了吗?
回复 支持 反对

使用道具 举报

16#
发表于 2009-6-4 22:56 | 只看该作者
我明白了...& @7 l; d  @) U9 S
不过屏幕中央是个什么概念,1024x768的标准的话, (512,384)还是?
回复 支持 反对

使用道具 举报

17#
 楼主| 发表于 2009-6-4 22:59 | 只看该作者
引用第15楼firendless于2009-06-04 22:56发表的  :+ W/ Z% E9 ?6 I! }% N0 t
我明白了...$ e/ _! A6 u$ E1 s
不过屏幕中央是个什么概念,1024x768的标准的话, (512,384)还是?

, j2 b, d; {5 a# R不是指屏幕的正中央,是指屏幕中部。
' C; s& s$ _6 V6 O/ |& P6 T你看过游戏画面就知道。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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