设为首页收藏本站官方微博
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 | 只看该作者
我刚才又看了一遍你的帖子,现在我的理解是这样的,你看看对不对。
/ |9 g' F6 b  J( X6 j' F- A1、首先修改字体,让我们需要显示的文字等宽等高。* E& S! W2 I+ g6 F8 Q$ F: r
2、然后修改要显示的文本,产生类似条码的东西。比如原来显示的Option,我们可能需要改成■ ■■■ ■
1 e4 |2 L! h* ?/ p3、修改文字显示的位置,尽量让每个场景的文字都显示在同一个地方。1 M! N, t1 T9 f
4、另外运行一个程序,动态监测屏幕,发现类似条码的部分就去比照对码表,符合的就用DirectDraw技术将字幕覆盖原画面。
5 _3 K! C4 N* E! ]* E% G& q0 u; |) T4 N' A4 X& E) p% d, w+ {
基于我上述的理解,我有几点不明白的地方:
6 N+ L) }& U/ e9 f$ B$ m1、方块的显示用什么字符呢?
+ b) ?( [7 j' v$ P" W  E4 J- x2、如果单纯是方块和空格的变化,那跟二进制差不多,需要的位数就会很长才能满足需要;
1 O# E. o( \; @9 q+ R3 ?: G( p3、关于像素级二维码,我没看明白。怎么生成?
回复 支持 反对

使用道具 举报

13#
 楼主| 发表于 2009-6-4 22:26 | 只看该作者
肥牛,你真聪明!
& L$ A' D2 H( F1 M你看懂了大约80%。8 J" F, {% E1 E+ _0 `; f1 L/ c
还有20%等我慢慢告诉你。
回复 支持 反对

使用道具 举报

14#
 楼主| 发表于 2009-6-4 22:28 | 只看该作者
引用第9楼sspking于2009-06-04 22:06发表的  :
$ X: e* ~! X; |这个事情不难,我给你写个小程式~: y& Z8 J+ D$ g, C0 q
就是取一个图片,把图片中所有的指定颜色的XY坐标集输出到TXT中对吧?

' B3 ?$ B$ a9 Z这个任务暂时取消了,本次ankh汉化暂时用不上这个。
回复 支持 反对

使用道具 举报

15#
 楼主| 发表于 2009-6-4 22:47 | 只看该作者
1、首先修改字体,让我们需要显示的文字等宽等高。
7 r, b4 R0 l& \$ B理解正确 4 B' \$ ?* a- R% L! o

% @: p5 v! M& \  o; Y3 d2、然后修改要显示的文本,产生类似条码的东西。比如聪允镜腛ption,我们可能需要改成■ ■■■ ■
; q- `) z# B/ i4 E0 U5 Z基本理解正确。
3 P+ G  `0 L, [4 ~& A" }5 T条形码只用于识别屏幕下方黑色背景的字幕。
( D4 n+ ~" e7 y" }2 N) I' P注意图片字库有多个,就是说有多个tga.
( \$ r/ X1 y- V7 ?) N" O6 i: j- f6 v. |6 O2 ]! d% _
由于图片字库可以自己定义每个字符的宽高,我想定义2个宽高都是1个像素的字符。 8 F$ z4 W: H  |* K; K4 ]+ x
一个是有色点,一个是透明点。显示出来就是一个像素级的条形码。这个能理解吧。
: M4 b3 f; @5 L0 O9 ]9 C2 S( J0 R, Z7 x6 U1 C* P* o1 E
3、修改文字显示的位置,尽量让每个场景的文字都显示在同一个地方。 , M' R2 o2 ~! T& C
理解正确 / Q/ }. {' q% `4 N- f( C! Z

# V5 G9 L: R/ X& S9 K/ J
7 F" V, r% {/ ]  P0 h* g: e4、另外运行一个程序,动态监测屏幕,发现类似条码的部分就去比照对码表,符合的就用DirectDraw技术将字幕覆盖原画面。 ( k- n* a; F( R$ z4 f
理解正确
4 V" Y/ d- P& S# T( X/ u这个游戏用的是dx9,不是DirectDraw。
2 x$ R/ b  g! i% ]
dx9 proxy dll技术你可以再看看我发的帖子。 9 Z4 R, s% X9 U) ?

! A2 l! g6 p5 K3 O, G基于我上述的理解,我有几点不明白的地方:
3 W# s9 `, N0 y5 d& j1、方块的显示用什么字符呢?
" y# {. I4 T' d& d, Z2 C- q这个上面解释了
: F3 p: r) j* M( P4 X+ |5 n+ f% Q1 ]
2、如果单纯是方块和空格的变化,那跟二进制差不多,需要的位数就会很长才能满足需要;
; u4 c  d% _$ X: e不错,要12-13 位,不过是像素级的,实际上很短。 ) A6 }# H  f3 F# c8 J
就算比较长,我的字幕写上去之前,会先画个黑色矩形上去覆盖掉。
% s/ W$ p% S8 D+ @1 T/ L所以不会有问题。 ' K: V9 w, O+ d/ l2 n  B( R

8 E% c6 o" U9 A3、关于像素级二维码,我没看明白。怎么生成? - P* J0 `; W! D
上面的都理解的话这个也不难。 / }+ ?+ R5 H7 U, _
道理和条形码类似,不过二维码和条形码用的不是同一个tga。
) k8 W! n$ E9 J8 D; j5 W二维码对应屏幕中央字幕。
: _9 _( i# ^9 s4 g% J/ R+ L7 S条形码对应屏幕底部字幕。
- ?6 s0 i) Z& |4 `
( ?/ b, O! H9 [0 ~! A! U二维码是一个3x3 像素级的小块,这样面积最小,要知道,在屏幕中央字幕显示的时候。
7 Q) I  ]0 H: M0 A由于有游戏背景,所以不能先画一个黑色矩形上去,所以要求二维码的面积足够小。 & ]8 n; D; V" D4 P

: o0 T1 P1 P/ K5 N+ E5 z二维码 是一个ID 对应一个ASCII 码,再对应1个3x3 像素级的小块
( J4 [( j# h3 U( ~1 K5 f/ r; V条形码 是一个ID 对应 12-13 个ASCII 码  再对应 12-13 个1x1 像素级的小块 , E2 X9 N1 x( ?) s8 H
, G, ]* s9 Z+ }" _# a
明白了吗?
回复 支持 反对

使用道具 举报

16#
发表于 2009-6-4 22:56 | 只看该作者
我明白了...2 p8 g: M& t0 ~. r8 T: P* M
不过屏幕中央是个什么概念,1024x768的标准的话, (512,384)还是?
回复 支持 反对

使用道具 举报

17#
 楼主| 发表于 2009-6-4 22:59 | 只看该作者
引用第15楼firendless于2009-06-04 22:56发表的  :$ R% ^, l3 F/ R' u
我明白了...
! r3 E/ P- X' N% b5 q! q. r; Q不过屏幕中央是个什么概念,1024x768的标准的话, (512,384)还是?

1 i1 b, x( w9 H# s/ V7 n3 H不是指屏幕的正中央,是指屏幕中部。
0 x5 v( D, N2 ^, d2 K. x' G你看过游戏画面就知道。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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