资源描述
毕业设计
设计题目:
系 别:
专业班级:
指导老师:
学生姓名:
5月18日
摘要:
在二十一世纪今天,手机几乎是每个人必备品,尤其是在高校学生,不管是吃饭、睡觉、还是上课,手机总是不离手。而且手机更新换代更是日新月异,然后在现在手机市场中android系统智能机成为主流。
我们这款画画小软件正是在android系统平台上进行运行。在日常生活中,我们画画只能在纸上时代已经过去,这款android小画家画画软件,能够进行简单简笔画操作、上色。既节省了增加了我们平时乐趣,也节省了资源。该软件含有改变画图形状、改变画笔颜色、改变画刷宽度、改变画画风格、和保留、清除等功效。经过测试,这是一款能为我们生活增加乐趣软件。
关键字:手机;android;画画软件
目录
第一章 引言 - 1 -
1.1发展情况 - 1 -
1.2研究现实状况 - 1 -
1.3研究前景展望 - 1 -
1.4选题目标及意义 - 2 -
第二章 系统可行性分析 - 3 -
2.1经济可行性分析 - 3 -
2.2操作可行性分析 - 3 -
2.3技术可行性分析 - 3 -
2.3.1 eclipse概述 - 3 -
2.3.2 ADT 概述 - 4 -
2.3.3 android SDK概述 - 4 -
2.3.4 java概述 - 5 -
第三章 需求分析 - 6 -
3.1软件功效描述 - 6 -
3.2系统功效分析 - 7 -
3.3软件需求分析 - 9 -
3.4软件概念结构设计 - 9 -
第四章 软件具体设计 - 12 -
4.1软件设计原理 - 12 -
4.2软件模块设计 - 12 -
第五章 软件测试 - 30 -
总 结 - 31 -
参考文件 - 32 -
致 谢 - 33 -
第一章 引言
1.1发展情况
在现在这个手机普及时代,多种手机软件也是层出不穷,尤其是在这两年飞速发展,android软件能够是说席卷各大手机软件网站,为android软件开发者既带来了收入回报,也提出了技术挑战。android系统这个平台以成为智能手机系统关键,也是IT技术行业、智能手机制造行业高度重视。伴随android系统不停更新,现在功效各方面已经很强大,这不仅是一台手机这么简单,而是一个移动终端。多种软件全部有几乎全部有android系统版本。同时用户现在不仅要求手机有传统手机功效,现在必需愈加含有娱乐性和休闲性。抓住现在用户这个心理状态,于是android平台上运行小画家画画软件就运行而生了。
1.2研究现实状况
就现在android系统智能手机在市场拥有率来看,对android系统手机软件开发含有很宽广前景。即使在IT行业中全部处于一个饱和状态,不过在android系统手机软件开发这首先又处于紧缺状态,因为现在手机用户拿起手机不仅仅是只用来打打电话,发发短信这么简单,用户愈加追求是手机娱乐性和休闲性。说愈加简单明了一点就是,用户在无聊时候能够用手机来消遣时间。android系统自2月公布android1.1开始已经有4年发展历史。然而在这短短四年时间就能够成为智能手机市场领头羊,那么对于我们开发android系统手机软件,也是一样含有宽广市场。
1.3研究前景展望
伴随android系统智能手机诞生,android系统打破了前些年智能手机垄断传统市场。同时android系统手机软件占据手机软件市场百分比越来越大,那么我们开发画画涂鸦软件是基于android系统,能够说是含有宽广发展前景。而且现在用户对手机软件是否含有娱乐性有很强选择性,用户对于空闲时间消遣,还有即时聊天需要发送一个手绘涂鸦图片需要,那么对我们这款软件选择是很有用。对于小画家手机软件含有一下优点:(1)喜爱画画用于,不管是在车上,还是站台等车,全部能够随时随地进行简笔画画画操作。(2)能够将画好图片保留经过即时聊天工具发给好好友分享自己作品。(3)在手机上画能够节省资源,在环境保护角度,起到节能减排效果。
1.4选题目标及意义
为了巩固在大学三年所学知识,达成学以并用目标,作为四川工商职业技术学院信息工程系软件班大三毕业生,期望在离开自己母校时候能够把自己所学知识能够做一次全方面巩固和提升,我选题意义以下:
伴随android系统不停升级,android系统智能手机多种软件对各方面影响越来越大,而且android系统成为以后移动智能用户终端可能性同时也越来越大,那么未来android系统主导智能手机市场也是肯定发展趋势。
那么我们开发这款画画小软件也是顺应时代发展时尚,在传统按键手机,我们不能做出这个灵活画画涂鸦软件,现在我们借助android系统这个平台来实现了这一功效。这么不仅提升图片趣味性;建立生动有趣图片处理平台,而且还提升手机利用率。何乐而不为呢。
第二章 系统可行性分析
可行性研究目标就是用最小代价在尽可能短时间内确定问题是否能够处理。可行性研究目标不是处理问题,而是确定问题是否值得去处理。可行性研究就是进行一次大大压缩简化了系统分析和软件设计过程,也就是在较高层上以抽象方法进行系统分析和软件设计过程。
2.1经济可行性分析
在android系统多种手机软件频频被开发出来今天,那些软件开放团体怎样进行软件开发,和开发出来软件有什么特色来吸引用户,是越来越关键问题。而我们这个小软件内容简单,开发周期短,投资小。投入运行后,提供无偿下载,然后在软件中植入广告成份,来获取利润。所以该软件为开发团体所带来经济效益会远远高于前期投入资金。
2.2操作可行性分析
本软件开发工具是eclipse-SDK-4.2.1版本,eclipse内装插件ADT-21.0.0版本和android SDK 2.3.3。前端开发工具是java。这么eclipse就是一套完整开发工具,用于生成后缀为apk应用程序。以后将生成apk应用程序安装到手机就能够使用了。
2.3技术可行性分析
2.3.1 eclipse概述
eclipse 是一个开放源代码、基于Java可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于经过插件组件构建开发环境。幸运是,Eclipse 附带了一个标准插件集,包含Java开发工具(Java Development Kit,JDK)。
我们常常将 Eclipse 看成 Java 集成开发环境(IDE)来使用,但 Eclipse 目标却不仅限于此。Eclipse 还包含插件开发环境(Plug-in Development Environment,PDE),这个组件关键针对期望扩展 Eclipse 软件开发人员,因为它许可她们构建和 Eclipse 环境无缝集成工具。因为 Eclipse 中每样东西全部是插件,对于给 Eclipse 提供插件,和给软件开发人员提供一致和统一集成开发环境而言,全部工具开发人员全部含有相同发挥场所。
2.3.2 ADT 概述
Android开发工具(ADT),作为Eclipse工具插件,让其支持Android快速入门和便捷开发,可经过Eclipse开启菜单(开启Eclipse后,选择Help->Install New Software)安装。
ADT开发工具,包含Android Dalvik Debug Moniter Server(Android DDMS)和Android Development Tools(ADT),还有Hierarchy Viewer和TraceView两个查看器,看名称就知道功效了。DDMS能够提供调试设备时为设备截屏,查看线程及内存信息、Logcat、广播信息、模拟呼叫、接收短消息、文件查看器等功效(该功效在安装完ADT以后,点击Eclipse工具栏右上角那个带箭头小窗口图标弹出菜单中打开)。 Android Development Tools(ADT)工具应该是为Eclipse支持Android项目快速编程开发和调试插件而已。
2.3.3 android SDK概述
SDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定软件包、软件框架、硬件平台、操作系统等建立应用软件开发工具集合。
所以,Android SDK 指是Android专属软件开发工具包。
下载好Android SDK后,开始安装,Android SDK采取了Java语言,所以需要先安装JDK 5.0及以上版本。直接下载jdk安装文件安装更为方便。
Android SDK不用直接安装,下载后,直接解压即可, 将下载后SDK压缩包解压到合适位置,就这么简单;SDK安装OK。
2.3.4 java概述
Java是一个能够撰写跨平台应用软件面向对象程序设计语言,是由Sun Microsystems企业于1995年5月推出Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)总称。Java 技术含有卓越通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大开发者专业社群。在全球云计算和移动互联网产业环境下,Java更含有了显著优势和宽广前景。
第三章 需求分析
本设计为android系统手机上一个画画小软件,该软件关键是在eclipse开发工具上用java语言编写一个结果。eclipse 是一个开放源代码、基于Java可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于经过插件组件构建开发环境。而java语言含有卓越通用性、高效性、平台移植性和安全性。Eclipse编辑器引入了编辑环境方面部分增强功效,诸如单词补齐,增量搜索,代码凸显,缩进文本,标识行号,彩色打印,和快捷方法。eclipse编辑器还提供了很多为特定语言设计功效,比如在你输入原型和函数调用时候它能够自动完成这些字符串输入。
生成应用程序安装到手机后,直接点击打开,操作简单明了,软件含有形状选择、画笔宽度调整、画笔颜色改变、绘画风格改变、整屏清除和保留等功效。
3.1软件功效描述
小画家画画软件关键是提供给使用android系统智能手机用户,增加业余时间趣味性。本软件关键有简笔画画、上色、保留等功效。
(1) 形状选择,打开软件,选择菜单键,就会弹出菜单里面功效,选择形状功效就能够自由选择需要形状,形状有轨迹线、直线、矩形、椭圆形、圆形、点、还有橡皮擦等不一样形状。
(2) 清除,打开软件,选择菜单键,就会弹出菜单里面功效,清除功效就是将所绘制整张画布全部清除。
(3) 保留,打开软件,选择菜单键,就会弹出菜单里面功效,假如绘画好一张满意画,选择保留就能够将图保留在手机里面,以供自己以后欣赏或和好友分享。
(4) 设置,打开软件,选择菜单键,就会弹出菜单里面功效,选择设置,就能够进入到设置画面,设置里面有画刷宽度调整、画笔颜色选择、画画风格选择、是否是全屏模式、现在所使用版本、和能够看到最终调试时间和快捷键和对开发者提议。
3.2系统功效分析
依据软件使用情况和面向对象,本软件含有一下功效模块和操作方法:
功效
功效类别
子功效
用户管理模块
setDrawing设置形状
clearCanvas清屏
saveToSdcard保留
SettingsActivity设置
颜色管理模块
(color)
ColorPickerDialog颜色选择
画刷大小管理模块
(size)
Brush设置画刷大小
菜单
用户模块
功效描述
用户进入软件并选择操作
操作序列
1,点击“形状”选择要形状,默认轨迹线。
2,点击“清除”抹掉整张画布全部线条。
3,点击“保留”保留目前所画画。
4,点击“设置”进入更多设置画面。
形状
形状管理模块
功效描述
用户选择图形形状
操作序列
1, 点击menu按钮,屏幕下方显示菜单。
2, 点击“形状”进入形状设置。
3, 选择需要形状就能够了。
清除
清除管理模块
功效描述
用户需要清除整个画布
操作序列
1, 点击menu按钮,屏幕下方显示菜单。
2, 点击“清除”就把整张画布清除了。
保留
保留管理模块
功效描述
用户需要保留所画画
操作序列
3, 点击menu按钮,屏幕下方显示菜单。
4, 点击“保留”就将所画画保留下来了。
颜色
颜色管理模块
功效描述
用户选择画刷颜色
操作序列
1, 点击menu按钮,屏幕下方显示菜单。
2, 点击“设置”进入设置画面。
3, 点击“颜色”就能够选择自己喜爱颜色了。
画刷大小
画刷大小管理模块
功效描述
用户选择画刷大小
操作序列
1, 点击menu按钮,屏幕下方显示菜单。
2, 点击“设置”进入设置画面。
3, 点击“画刷宽度”就能够设置适宜画刷宽度了。
风格
画画风格管理模块
功效描述
用户选择画画风格
操作序列
1, 点击menu按钮,屏幕下方显示菜单。
2, 点击“设置”进入设置画面。
3, 点击“风格”就能够设置画画风格了。
模式
画图模式管理模块
功效描述
用户选择画图模式
操作序列
1, 点击menu按钮,屏幕下方显示菜单。
2, 点击“设置”进入设置画面。
3, 点击“全屏模式”就能够设置画图模式了。
3.3软件需求分析
伴随社会发展,时代进步,大家对生活品质不停提升,对生活享受心理也越来越强,越来越重视休闲娱乐。只有抓住现在大家心理需要才能在现在有得一席之地。一样在手机软件方面也是一样,现在大多数人手机里面占据一大部分内存全部是休闲娱乐游戏,就是在无聊时候打发时间。而我们这款android小画家画图软件就是提供给那些爱画简笔画画图爱好者,所以,既然现在有这个需求,我们就能够满足用户这个需要,开发这么一款画图软件。
3.4软件概念结构设计
这一设计阶段是在需求分析基础上而进行,设计出能够满足用户需求多种实体,和它们之间关系,为后面逻辑设计打下基础。
概念结构关键特点是:
(1) 能真实、充足地反应现实世界,包含事物和事物之间联络,能满足用户对软件功效要求。
(2) 易于了解,从而能够用它和不熟悉使用手机用户交换意见,用户主动参与是软件开发设计成功关键。
(3) 易于更改,当应用环境和应用要求改变时,轻易对概念模型修改和扩充。
软件开发
在小画家软件开发中存在系统用例、开发人员和用户、数据步骤处理、数据表述等多个对象关系,具体描述以下面各图所表示。
用户管理
开发维护
后台数据维护
软件更新
开发人员
系统用例图
用户
小
画家软件
开发
人员
用户信息 软件下载
软件信息
用户情况
软件升级 提议反馈
总体步骤图
软件管理
用户
软件信息
软件信息 软件下载条件
软件情况
开发人员
下载信息 软件信息 软件信息 下载条件
软件信息表
用户下载信息表
用户下载情况
用户信息 下载量信息 软件信息
下载信息 下载量信息
下载管理
用户管理
下载量信息
用户信息
开发人员
用户信息 用户信息 下载量信息
用户管理表
数据流图处理图
下载情况
软件卸载信息表
软件
信息表
用户
信息表
开发团
信息表
下载信息表
用户排行表
数据表述E-R图
第四章 软件具体设计
4.1软件设计原理
本软件基于android系统智能手机,在android系统设备上运行,就像打开手机播放器一样简单打开软件就能够操作。它是伴随android系统手机兴起,借助android系统平台开发一个软件。关键是利用不停成熟android系统,结合java语言和XML而产生软件。Java 语言含有卓越通用性、高效性、平台移植性和安全性,而可扩展标识语言XML是用于标识电子文件使其含有结构性标识语言,能够用来标识数据、定义数据类型,是一个许可用户对自己标识语言进行定义源语言。这么开发软件不仅在界面上比较美观,而且能够在android系统平台上稳定运行。
4.2软件模块设计
打开软件即可进入到画画操作界面,也能够选择多种多样功效,利用现在有功效能够随心所欲画出想要简笔画,在选择多种多样功效时候也有界面跳转弹出和菜单功效选择。因为现在是测试版本,不存在和互联网连接情况,这么对用户私人隐私也含有绝正确安全保密,因为只是一款画图软件,所以我们不会访问用户手机联络人、短信、和地理位置信息,同时也不需要取得手机任何权限,只是能够运行和使用就能够了,这么给开发团体提议也只能发在开发团体邮箱中。下面是软件多种界面截图和部分代码。
打开软件,就如同打开音乐播放器一样简单,打开以后,就进入软件主界面,这就是一张画布,能够在上面随意画自己喜爱线条。这是软件最基础,也是最关键部分,在软件中首先要创建这么一个activity,才能展开其它功效。
首先要在手机界面创建一个这么画布,这是我们最关键起步,创建一个界面activity,才能进行下一步操作,用public公有类,因为关键是主界面activity包含其它很多方法访问,设置多种功效方法类型、初始值。就以下所表示,
/**
*关键视图类
*/
public class PaintPad extends View
{
float tempX, tempY;
private Bitmap bitmap = null;
private Canvas paper = null;
boolean isMoving = false;
Drawing drawing = null;
int bgcolor;
Context context;
}
然后添加不一样功效和设置用setDrawing方法,设置绘画背景色状态为初始默认状态、绘画形状目前状态参数为默认空、屏幕上此时信息为默认初始状态。
/**
*设置绘画形状
* @param drawing
* 目前绘画形状参数
*/
public void setDrawing(Drawing drawing)
{
this.drawing = drawing;
}
public PaintPad(Context context)
{
super(context);
this.context = context;
//获取屏幕上信息
ScreenInfo screenInfo = new ScreenInfo((Activity) context);
/**
*创建和屏幕大小位图
*/
bitmap = Bitmap.createBitmap(screenInfo.getWidthPixels(),
screenInfo.getHeightPixels(), Bitmap.Config.ARGB_8888);
paper = new Canvas(this.bitmap);
//设置背景颜色
paper.drawColor(getResources().getColor(R.color.color_default_bg));
this.isMoving = false;
}
手指在屏幕上触动时候,用private 私人方法fingerMove,会统计下所运动轨迹或方法所要求形状,处理手指动作,这是让手指在画布activity界面处理手指所留下坐标,将全部坐标点组成线就是所画出来图形。
private void reDraw()
{
invalidate();
}
/**
* 处理手指动作。
* @param x
* X坐标
* @param y
* Y坐标
*/
private void fingerUp(float x, float y)
{
this.tempX = 0;
this.tempY = 0;
drawing.fingerUp(x, y, paper);
this.isMoving = false;
}
/**
* 处理手指动作
* @param x
* @param y
*/
private void fingerMove(float x, float y)
{
this.tempX = x;
this.tempY = y;
this.isMoving = true;
drawing.fingerMove(x, y, paper);
}
/**
* 处理手指动作
* @param x
* @param y
*/
private void fingerDown(float x, float y)
{
this.isMoving = false;
drawing.fingerDown(x, y, paper);
}
假如处理好一张图,需要保留,调用公用public方法saveBitmap,对画好图进行保留,这个时候,软件会检测是否有保留介质存在,假如不存在,就保留不了,有可能还会引发软件瓦解;假如检测到存在保留介质,编辑图片名字进行保留就能够,假如没有名字,软件默认给一个名字,进行保留。
/**
* 检验SD卡是否可用
*/
public void saveBitmap()
{
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state))
{
saveToSdcard();
}
else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state))
{
Toast.makeText(this.context,
getResources().getString(R.string.tip_sdcard_is_read_only),
Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(
this.context,
getResources().getString(
R.string.tip_sdcard_is_not_available),
Toast.LENGTH_LONG).show();
}
}
public void changeBgColor(int color)
{
this.paper.drawColor(color);
this.reDraw();
}
当检验到储存介质是存在,即私人private 方法saveToSdcard来实施,在SD卡中创建属于软件保留文件夹,访问路径由“/”符号来分开,保留时间为系统时间,保留图片格式为".png"格式,最终就是将图片进行储存。
/**
* 保留位图在SD卡上
*/
private void saveToSdcard()
{
File sdcard_path = Environment.getExternalStorageDirectory();
String myFloder = getResources().getString(
R.string.folder_name_in_sdcard);
File paintpad = new File(sdcard_path + "/" + myFloder + "/");
try
{
if (!paintpad.exists())
{
paintpad.mkdirs();
}
}
catch (Exception e)
{
e.printStackTrace();
}
String timeStamp = (DateFormat.format("yyyy.MM.dd.hh.mm.ss",
new java.util.Date())).toString();
String suffixName = ".png";
String fullPath = "";
fullPath = sdcard_path + "/" + myFloder + "/" + timeStamp + suffixName;
try
{
Toast.makeText(this.context,
getResources().getString(R.string.tip_save_to) + fullPath,
Toast.LENGTH_LONG).show();
press(Bitmap.CompressFormat.PNG, 100,
new FileOutputStream(fullPath));
}
catch (FileNotFoundException e)
{
Toast.makeText(
this.context,
getResources().getString(R.string.tip_sava_failed)
+ fullPath, Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
利用软件就能够画出你想要简笔画,比如像菠萝一样水果,哆啦A梦一样卡通人物,还有很多很多,只要你想到全部能够利用它画出来。创建界面图1所表示,画出菠萝图2所表示,画出哆啦A梦图所表示。
图1,打开软件 图
2,用画笔画菠萝
图3,用画笔画哆啦A梦
只有画画远远不是我们要要功效,当然还有几乎全部软件全部含有一个功效,设置。菜单中含有形状、清除、保留、设置。进入设置,有很多相关画画多种功效。画笔宽度pen_width为默认初始宽度,画笔颜色pen_color为默认颜色,画布颜色为空即是白色,画画风格为初始默认状态,以下是进入设置部分代码。图4是菜单现实设置界面。图5是进入设置以后界面,有画刷宽度、颜色等功效选择。
import java.text.SimpleDateFormat;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.vhow.paintpad.R;
import org.vhow.paintpad.helper.ColorPickerDialog;
import org.vhow.paintpad.tools.Brush;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
/**
*当用户选择设置按钮,就跳转到这个activity。
*当用户点击时候、实现OnPreferenceClickListener接口。
*优先调用onPreferenceClick()。
*/
public class SettingsActivity extends PreferenceActivity implements
OnPreferenceClickListener, ColorPickerDialog.OnColorChangedListener
{
SharedPreferences prefs = null;
Preference pen_width = null;
Preference pen_color = null;
Preference canvas_bg_color = null;
String pen_width_key;
String pen_color_key;
CheckBoxPreference pen_style = null;
Preference versionName;
Preference lastBuildTime;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
/**
*XML对这个activity虚拟设置
*/
addPreferencesFromResource(R.xml.settings);
pen_width_key = getResources().getString(R.string.pen_width_key);
pen_color_key = getResources().getString(R.string.pen_color_key);
/**
*找到要处理对象。
*/
pen_width = (Preference) findPreference(getResources().getString(
R.string.pen_width_key));
pen_color = (Preference) findPreference(getString(R.string.pen_color_key));
versionName = (Preference) findPreference(getString(R.string.setting_about_version_key));
lastBuildTime = (Preference) findPreference(getString(R.string.setting_about_build_key));
versionName.setSummary(getVersionName());
lastBuildTime.setSummary(getLastBuiltTime());
/**
*注册监听器。包含画刷宽度,画刷颜色。
*/
pen_width.setOnPreferenceClickListener(this);
pen_color.setOnPreferenceClickListener(this);
}
private String getLastBuiltTime()
{
String lastBuiltTimeString = "Unknown";
try
{
ApplicationInfo ai = getPackageManager().getApplicationInfo(
getPackageName(), 0);
ZipFile zf = new ZipFile(ai.sourceDir);
ZipEntry ze = zf.getEntry("classes.dex");
long time = ze.getTime();
lastBuiltTimeString = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(new java.util.Date(time));
}
catch (Exception e)
{
//最终编译时间是“未知”.
}
return lastBuiltTimeString;
}
private String getVersionName()
{
String versionName = "Unknown";
try
{
versionName = this.getPackageManager().getPackageInfo(
getPackageName(), 0).versionName;
}
catch (NameNotFoundException e)
{
//最终版本名是“未知”。
}
return versionName;
}
/**
* 处理该事件优先权
*/
public boolean onPreferenceClick(Preference preference)
{
if (preference.getKey().equals(pen_color_key))
{
String str = getResources().getString(R.string.tip_choose_color);
new ColorPickerDialog(this, this, Brush.getPen().getColor(), str)
.show();
}
else if (preference.getKey().equals(pen_width_key))
{
showSetBrushWidthDialog();
}
return true;
}
/**
*弹出一个对话框SeekBar以控制画笔宽度
*/
private void showSetBrushWidthDialog()
{
SeekBarDialog seekBarDialog = new SeekBarDialog(this);
seekBarDialog.setTitle(Brush.getPen().getStroke
展开阅读全文