华中科技大学c语言课程设计——汉字点阵字库的建立

上传人:第*** 文档编号:55654654 上传时间:2018-10-03 格式:PDF 页数:15 大小:819.89KB
返回 下载 相关 举报
华中科技大学c语言课程设计——汉字点阵字库的建立_第1页
第1页 / 共15页
华中科技大学c语言课程设计——汉字点阵字库的建立_第2页
第2页 / 共15页
华中科技大学c语言课程设计——汉字点阵字库的建立_第3页
第3页 / 共15页
华中科技大学c语言课程设计——汉字点阵字库的建立_第4页
第4页 / 共15页
华中科技大学c语言课程设计——汉字点阵字库的建立_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《华中科技大学c语言课程设计——汉字点阵字库的建立》由会员分享,可在线阅读,更多相关《华中科技大学c语言课程设计——汉字点阵字库的建立(15页珍藏版)》请在金锄头文库上搜索。

1、 华中科技大学电子与科学技术系华中科技大学电子与科学技术系 课程设计终期报告课程设计终期报告 (20142015 年度第 2 学期) 名 称: 软件课程设计 题 目: 汉字点阵字库的建立与提取 院 系: 光学与电子信息学院 班 级: * 指导教师: * 设计周数: 10 周 成员: Crainax * * 日期 2015 年 6 月 14 日 一一 具体分工任务具体分工任务 1.具体任务分工:具体任务分工: *负责以下内容:负责以下内容: (1)整个 JFrame(图形界面菜单)各项 Swing 组件的位置、大小、属性的 微调。 (2)FontSize(最大支持 96*96)、 FontCol

2、or(自定义颜色)类的编写 以及该功能显示的实现。 (3)自定义 RGB 色颜色功能实现。 (4)利用组件类所继承的 paint(Graphics g)的方法绘出矢量字体以及矢 量字模的放大显示的核心功能。 (5)BufferedImage 缓存图像中将单个字转换为十六进制点阵字模代码的 实现。 (6)代码区字符串的输出实现。 (7)横向扫描和竖向扫描功能的实现。 (8)KeyListener 与 ActionListener 对框架监听功能的父类的重写。 (9)软件后期的各项代码的整合、Debug。 (10) 后期修复各项发现的 BUG。 *负责以下内容:负责以下内容: (1)获取系统环境所

3、有字体的实现(不局限于宋体、黑体等基本字体) 。 (2)FontName(支持系统所有字体) 、FontStyle(字体的四大风格)类的 编写以及该功能显示的实现。 (3)JFileChooser 类的实现以及优化,能自定义选择一个存放字库文件 的文件夹。 (4)分割字符串为各个字符的实现。 (5)输入字符串生成.bin 文件的实现。 (6)各种细节的优化算法的提出以及优化。 (7)获取任意区位码功能的实现,并应用于“一键生成所有汉字”、“一 键生成 GB2312”、“自定义区位生成文件”功能的实现。 (8)File 类异常的编写,防止重名功能的实现。 (9)Main 函数的书写。 (10)

4、各种错误对话框的静态调用功能的实现。 *负责以下内容:负责以下内容: (1) 利用 PhotoShop 设计程序图标。 (2) 利用 PhotoShop 设计程序背景图片。 (3) 版本内容的撰写。 (4) 终期报告的书写。 (5) 程序代码注释的书写。 (6) 整个可视化框架草图的绘画。 (7) 异常时候弹出的对话框内容的书写。 2、具体任务实施时间 (1)整体框架的构思、绘画以及布局,用时一周。 (2)汉字转换成十六进制代码的功能的讨论与制定、编写,用时一周。 (3)矢量字体以及点阵字体功能实现的思考以及编写,用时一周。 (4)字体各项参数(字体、风格、大小、颜色、扫描方向)功能的实现,用

5、 时一周。 (5)输出字符串并分割、区位码获取字符、生成 bin 的 file 文件功能的实现, 用时一周。 (6)版本内容、UI(图标、背景) 、BUG 的发现、修改,用时一周。 二二 软件编写使用的语言软件编写使用的语言 软件主要使用 java 这一面向对象的程序语言编写,这样可以使用 java 丰 富的类,接口 ,从而减少软件开发的难度。另外 java 有着强大的异常处理 能力,进而提升的软件的稳定性。又由于 java 的良好的跨平台能力,使得 本程序能在多种平台上可靠有效的操作,而不仅仅限于在 window 系统上运 行。 Java 具有的完全面向对象开发设计、类的多态性、继承性、封装

6、性、多 线程、异常处理机制、IO 流、GUI 的开发功能,使得 java 在很多方面胜于 C 语言。由于我们小组中在选择第一学期下的公选课时候,凭借着对编程的兴 趣,选择了华中科技大学计算机学院的胡兵老师的“Java 语言程序设计的入 门”这门公选课,其中包含的 SWING 组件和 Java 中一些强大的 API 类完全可 以驾驭该软件课程设计,最终我们决定使用 Java 语言完成该软件课程设计。最 后,我们觉得 JAVA 自带 Swing 组件容器框架显示比较粗糙,故我们后期打算 利用 Photoshop 设计出的自定义图标以及自定义渐变简约背景充当整个软件的 核心 UI 设计部分,并取得了

7、成效,故在此终期报告中展示。 本次设计使用的编译工具是 Eclipse,JDK 版本为8.0.450.14,java 语言版 本是 JavaTM 2 Platform Standard Ed. 5.0。 二二软件界面软件界面 三三.软件的框架软件的框架 四四 实现功能实现功能使用的主要类使用的主要类、接口接口、方法方法。 1.1.GraphicsEnvironmentGraphicsEnvironment 类类 GraphicsEnvironment 类描述了 Java(tm) 应用程序在特定平台上可用的 GraphicsDevice 对象和 Font 对象的集合。 GraphicsEnvir

8、onment enironment; enironment =GraphicsEnvironment.getLocalGraphicsEnvironment(); String fontname=enironment.getAvailableFontFamilyNames(); 获取系统字体 GraphicsEnvironment enironment; enironment =GraphicsEnvironment.getLocalGraphicsEnvironment(); fontname=enironment.getAvailableFontFamilyNames(); 开辟一个图像缓

9、冲区,在缓冲区写字,并获得缓冲区像素 BufferedImage image = new BufferedImage(getsize(),getsize(),BufferedImage.TYPE_INT_RGB); Graphics g = image.createGraphics(); g.drawString(a,0,f.getAscent()-1); int p = image.getRGB(0,0,image.getWidth(),image.getHeight(),null,0,image.getWidth() 判断像素着色情况 p i*image.getWidth()+j!=-1?

10、“1“:“0“; 写文件 fileout.writeByte(pi); 通过使用GraphicsEnvironment类从而获得当前平台的字体,进而为下一步打好 基础。通过获得设备上可用的的字体而不是事先在程序编程过程中假设设备可 能有的字体,使得程序可以适应各种情况不一的设备。 2. BufferedImage2. BufferedImage类类 BufferedImage 子类描述具有可访问图像数据缓冲区 image。 BufferedImage image = new BufferedImage(getsize(), getsize(), BufferedImage.TYP E_INT_

11、RGB); Graphics g = image.createGraphics(); g.drawString(a,0,f.getAscent()-1); intp=image.getRGB(0, 0, image.getWidth(), image.getHeight(), null, 0, image.getWidth(); 使用此类在内存中开辟一个图像缓冲区,然后在此缓冲区内绘制矢量字体, 最后使用 bufferedimage 类中的方法 getRGB(),返回所选的图像部分的一个默 认颜色格式的整数像素数组。通过使用该类可以使获取点阵字模完全在内存中 实现,减少了不少的麻烦,同时也使程

12、序的效率更高。 3 3GBGB23122312 区位码转换为机内码区位码转换为机内码(codecode) byte quweima=new byte2 ; quweima0=chinesea; quweima1=chineseb; for (int chinesec =0;chinesec1); 此段代码是将区位码装换为机内码(code)。Java中的code用一个长度为 2的byte数组表示的。将区码和位码分别加32,再通过java中的位操作通过左 移,右移等位操作将最高位置为1,最终将区位码转为机内码。进而通过java 中String类的构造方法 String(byte code, Str

13、ing charsetName)将编码转换为指定的字符编码 所对应的字符。 4 4. . JFileChooserJFileChooser类类 JFileChooser 为用户选择文件提供了一种简单的机制。 chooser = new JFileChooser(new File(new File(“).getAbsolutePath(); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.showSaveDialog(null); 当以上代码执行时,将会生成一个初始路径是程序所在路径的文件选择窗 口,在这里

14、可以选择生成的字库文件所在的位置。 5. 5. FileFile、 DataOutputStreamDataOutputStream类类 数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流 中。 File file =new File(jTextFieldshurukuang3.getText(),fileString); file.createNewFile(); fileout = new DataOutputStream(new FileOutputStream(file,true); fileout.writeByte(pi); fileout.close(); 当运

15、行上述代码以后,将会创建一个文件,同时创建一个数据输出流, 将储存在数组中的数据以二进制的形式写进文件,最后关闭数据流。 6.6. ActionListenerActionListener,KeyListenerKeyListener接口接口 ActionListener用于接收操作事件的侦听器接口。对处理操作事件感兴趣的 类可以实现此接口,而使用该类创建的对象可使用组件的 addActionListener 方法向该组件注册。在发生操作事件时,调用该对象的 actionPerformed 方法。 具体代码如下: (该处以生成字符串按钮功能实现举例) if(jButtonqueding2=e.getSource() jTextFieldshurukuang1.setText(“); String fileString=new String(“+jTextFieldshurukuang2.getText()+“”_“+(String)boxfon tname.getSelectedItem()+(String)boxfontsize.getSelectedItem()+ (String)boxfontstyle.getSelectedItem()+“.bin“); String shurustring=jTextFieldshurukua

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号