爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1059|回复: 2
收起左侧

狐狸JAR修改第三课(字体大小的修改)【转】

[复制链接]
发表于 2009-3-31 13:10:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
随便转来的 本人不懂java 所以 觉得好像是外挂中文的方法所以转过来
   我自己也看不懂,请大大们来鉴定一下。。。



狐狸JAR修改第三课(字体大小的修改)狐狸JAR修改第三课(字体大小的修改) 教程匆忙,有错误的地方。忘指正。。使用字体在J2ME手机编程中,可以通过使用字体类——Font在低级用户界面中,获得更好的表现效果,那么如何使用Font类呢?首先,由于手机设备的限制,手机中支持的字体类型很有限,所以在J2ME中只能使用手机支持的默认字体来构造Font类对象。下面是创建Font类的对象时使用的方法: getFont(int face,int style,int size); 例如: Font font = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font. SIZE_MEDIUM); 无论哪一个参数,都只能使用系统设置的数值,这些数值具体的大小在不同的手机上可能不同。下面对于其中的三个参数的取值做详细的介绍: face参数指字体的外观,其的取值: FACE_MONOSPACE——等宽字体 FACE_PROPORTIONAL——均衡字体 FACE_SYSTEM——系统字体 style参数指字体的样式,其的取值: STYLE_BOLD——粗体 STYLE_ITALIC——斜体 STYLE_PLAIN——普通 STYLE_UNDERLINED——下划线 STYLE_BOLD | STYLE_ITALIC——粗斜体 STYLE_UNDERLINED | STYLE_BOLD——带下划线粗体 STYLE_UNDERLINED | STYLE_ITALIC——带下划线斜体 STYLE_UNDERLINED | STYLE_ITALIC | STYLE_BOLD——带下划线的粗斜体 size参数指字体的大小,其的取值: SIZE_SMALL——小 下面三个大家使用过JavaMagic的就知道了 SIZE_MEDIUM——中 SIZE_LARGE——大通过上面的参数的值,可以组合出你需要的字体对象。下面是一些常用的字体操作: 1. 获得系统的默认字体: Font font = Font.getDefaultFont(); 2. 在panit方法内部,假设Graphics参数的名称为g,则获得当前字体的方法是: Font font = g.getFont(); 3. 在panit方法内部,假设Graphics参数的名称为g,则设置当前字体的方法是: g.setFont(font); 其中font为你构造好的字体对象。 4. 在MIDP2.0中,List可以设置每行的字体格式,方法是: list.setFont(0,font); 则上面的代码是将list中的第一行设置为font类型的字体。 下面是字体函数的详细解释,也是大家在修改的时候要用到的。首先是字体相关程序方法的使用: font f=font.getfont(face,style,size) 现在的游戏主要是用的getfont(*,*,*)的形式来表示。。但有的是用变量来传递的。今天我们说一下前面的这种。大家仔细看吧!这三个*分别对应外观,样式,大小一、face 外观参数,有三种定义: 0:系统字体外观。class文件中的字节码对应 HEX=00 32:定宽字体外观。class文件中的字节码对应 HEX=20 64:比例字体外观。class文件中的字节码对应 HEX=40 二、style 样式参数,共四种定义: 0: 常规 样式常数。class文件中的字节码对应 HEX=03 1: 加粗 样式常数。class文件中的字节码对应 HEX=04 2: 倾斜 样式常数。class文件中的字节码对应 HEX=05 4:下划线样式常数。class文件中的字节码对应 HEX=07 三、size 大小 常数,共三种定义: 0:中号字体,class文件中的字节码对应 HEX=00 8:小号字体,class文件中的字节码对应 HEX=8 16:大号字体,class文件中的字节码对应 HEX=10 istore 对应的十六进制 36 istore_0 对应的十六进制 3B istore_1 对应的十六进制 3C istore_2 对应的十六进制 3D istore_3 对应的十六进制 3E 部份用的是这种来表示。 getFont方法是获得字体的一个实例。一般利用Font类的静态方法来创建字体。也就是static Font getFont(int i, int j, int k) 要设置字体,还需配合另外一个方法setFont,如g.setFont(Font.getFont()),或者另外参数形式。 Font getFont(int i, int j, int k) 其中i表示外观 由3个常量表示,0:系统字体,32:等宽字体,64:均衡字体 j表示字型 由4个常量表示,0:普通,1:粗体,2:斜体,4:下划线 k表示字号 由3个常量表示,0:中号字体,8:小号字体,16:大号字体若不设置,一般默认三个变量均为0。 到这里差不多也介绍完了。。下面开始实际的操作。。。以修QQ2008为例 1。首先我们可以使用我为大家写的《狐狸批量搜索工具》(下载工具看我发的贴子)来搜索所有文件中有没有使用font.getfont()方法。当然我们搜的时候只搜font.getfon这个就可以了。。我们也可以使用HALO来搜的。。具体方法是打开JAR后,随便点左边某个class 然后右键--选择“Edit class”进入类编辑器模式,到这里,就用菜单提供的“全文查找”,查找“getfont”指定搜索范围为全部class(Total class),就可以了。。 另一种方法就是得用JavaMagic处理的结果来找到要修改的是哪个文件。。请注意。在用这个工具前要在设置里把Misc2里的仅显示摘要去掉。。然后先Font把进行字体替换这项选上。。OK。接下来看处理过程就知道是哪个文件了。。 2。好了,前面说了这么多搜索的方法。。你选一种就行了。。我这里找到要修改的代码在dt.class里面。。代码如下: public final class dt { public static final Font a = CanvasPlus.getFont(0, 0, 8); public static final Font b = CanvasPlus.getFont(0, 1, 8); public static final Font c = CanvasPlus.getFont(0, 0, 0); private static int d = 0; private static int e = 0; private dt() { } public static void a(String s, int i, int j, int k, Font font, Graphics g) { g.setFont(font); a(s, i, j, k, g); g.setFont(c); } public static void a(String s, int i, int j, int k, Graphics g) { g.drawString(s, s = i, s = j, k); } public static void a(char ac[], int i, int j, int k, int l, int i1, Graphics g) { g.drawChars(ac, 0, j, ac = 32, ac = l, 20); } static { CanvasPlus.getFont(0, 0, 0); CanvasPlus.getFont(0, 1, 0); CanvasPlus.getFont(0, 0, 16); CanvasPlus.getFont(0, 1, 16); } } 看了上面介绍的内容。。你就知道getFont(0, 0, 8); getFont(0, 0, 16);这些代表什么了。。8是小号。16是大号。。接下来我就用16进制反编译工具来修改了。常用的16进 制反编译工具有(C32,uedit32,WinHex,Hex Workshop 等)这里我就用C32了。。。接下来就是把dt.class这个文件载入C32。。 然后在C32里面的菜单里面找到查找。。因为是十六进制,所以和我们看到的代码不一样。。这里我搜索10 08 B8(这个代表的是小字体这一项,也就如代码里的(0,0,8))了,把它替换为10 10 B8(这个代码大字体这项,如(0, 1, 16)) 注意搜索后看一下承上启下对不对哈。。对了就修改。。我这里当然搜到两个地方了。。你要是不会就把里面的都改了吧。。然后保存。。下一步就简单了。直接把修改好的bt.class压缩进我们的JAR包就行了。。。 上面我修改的是小字体为大字体。。你们可以改成其它的。。为了怕还是有人不会。。我再解释一下。。 10 08 B8 分别是怎么对应的。。 我们要改成其它的10可不变。要变的是后两项。。08代码字体的大小。。也就是下面的第二个“HEX=8” B8代表的是“invokestatic ” 如果你们要改成中号就是 10 00 B8 就行了。。你们有可能不一样。。所以你们的可能要变。。有可能是10 08 3C 或者10 08 3D 或10 08 3E 等。。修改得多了就知道了。。不懂在留言的。。 0 中号字体,class文件中的字节码对应 HEX=00 8:小号字体,class文件中的字节码对应 HEX=8 16:大号字体,class文件中的字节码对应 HEX=10 istore 对应的十六进制 36 istore_0 对应的十六进制 3B istore_1 对应的十六进制 3C istore_2 对应的十六进制 3D istore_3 对应的十六进制 3E
发表于 2009-4-1 00:31:10 | 显示全部楼层
wap68::ii整理一下嘛~~~这么乱乍看
回复 支持 反对

使用道具 举报

发表于 2009-4-1 08:59:22 | 显示全部楼层
这是修改
字号:大中小,
字形:加粗,下划线,斜体
回复 支持 反对

使用道具 举报

发表于 2009-4-1 09:00:00 | 显示全部楼层
这是修改
字号:大中小,
字形:加粗,下划线,斜体
回复 支持 反对

使用道具 举报

发表于 2009-4-1 09:00:01 | 显示全部楼层
这是修改
字号:大中小,
字形:加粗,下划线,斜体
回复 支持 反对

使用道具 举报

发表于 2009-4-1 09:00:18 | 显示全部楼层
这是修改
字号:大中小,
字形:加粗,下划线,斜体
回复 支持 反对

使用道具 举报

发表于 2009-4-1 16:40:18 | 显示全部楼层
有点花眼了~~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2024-5-16 03:13

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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