画图应用程序设计与实现
第1部分 设计的内容要求
给出设计的内容与要求
1.1
编写Windows自带画图程序,编写Applet或Application,使用鼠标在屏幕上随意画图:直线,矩形,圆角矩形,椭圆、圆等。
1.2
功能要求:
1. 实现绘图中的各种图形的绘制
2. 实现菜单、工具按钮等,实现对色彩,字体的设置等
3. 鼓励添加更加新颖的特色功能
第2部分 设计思想
根据你系统的实现,给出系统实现主要思想,算法,采用的技术。
2.1 主要思想
使用面向对象的分析与设计方法进行分析设计。这个软件主要由两个类构成,分别是实现画图的JPanel类派生类mycanvas类和主界面的JFrame类派生类mywindow类。主界面使用mywindow类构造,将各个功能放在界面的工具栏内实现。画图部分通过使用mycanvas类里继承自JPanel类的paint函数,通过graphics类对象的各种draw函数实现绘画。
2.2 算法和采用的技术
(1)绘画种类的选择通过在mycanvas类里定义标志变量flag实现控制,mywindow界面工具栏中选择绘画种类的menu item点击后会修改mycanvas中的标志变量flag,然后print函数中根据flag的值画出指定类型的图形。
(2)因为要连续显示直线,所以需要不断调用repaint函数但是又要保留画布上原先绘画的内容,这里使用截图函数createScreenCapture()函数截取屏幕上的画布部分存储到Bufferedimage类中,在paint函数前添加drawimage()函数,先画之前保存的图片,实现重绘。
(3)在mycanvas类中添加mouselistener和mousemotionlistener两个监听器实时获取鼠标的位置,获取绘图的参数。
第3部分 详细设计
给出系统的详细设计。各个功能的详细实现过程,必须给出主要算法和重要函数的的流程图,流程图必须是正确的
3.1 流程图
Mywindow init函数流程图: Mywindow savepic函数流程图:
流程图1.2
流程图1.1
Paint函数流程图:
流程图1.3
第4部分 运行效果图
画曲线:类似刷子的功能可以自己拖动绘制曲线
图1.1
画直线:拖动绘制直线
图1.2
画圆:拖动绘制圆形
图1.3
画矩形:拖动绘制矩形
图1.4
写文字:点击后弹出弹窗,输入文字内容后,点击