如何实现java画图程序,并可在已画的图上添加文字等,求大神T-T
基本功能:(1)在“形状”菜单选择相应的形状,在客户区按下鼠标左键拖动绘制相应的图形。(2)形状存储与绘制采用面向对象的方式:设置一个CShape为所有形状的基类它有一个...
基本功能:(1)在“形状”菜单选择相应的形状,在客户区按下鼠标左键拖动绘制相应的图形。
(2)形状存储与绘制采用面向对象的方式:设置一个CShape为所有形状的基类它有一个方法Draw代表形状绘制过程,从Shape类扩展出CLine类代表直线,CRectAngle表示矩形,CEllipse代表椭圆,分别实现各自的Draw方法。将所有形状对象记录到一个统一的Array对象中。
(3)右键菜单功能:用鼠标右键单击某个图形时弹出菜单,实现“删除”和“添加文字”功能
(4)形状拖动功能:点击已经选中的“形状”菜单项将其设置为未选中,进入鼠标可拖动图形的操作状态。当鼠标左键点击如果击中某个形状则保持按住鼠标左键便可拖动该击中的形状。
(5)仿照“形状”菜单实现填充颜色以及画笔类型菜单供用户选择填充形状的颜色(黑色、白色、红色、绿色、蓝色、黄色等)以及描绘形状边框的画笔的类型(实线、虚线)
求大神的源程序~ 913369187@qq.com 展开
(2)形状存储与绘制采用面向对象的方式:设置一个CShape为所有形状的基类它有一个方法Draw代表形状绘制过程,从Shape类扩展出CLine类代表直线,CRectAngle表示矩形,CEllipse代表椭圆,分别实现各自的Draw方法。将所有形状对象记录到一个统一的Array对象中。
(3)右键菜单功能:用鼠标右键单击某个图形时弹出菜单,实现“删除”和“添加文字”功能
(4)形状拖动功能:点击已经选中的“形状”菜单项将其设置为未选中,进入鼠标可拖动图形的操作状态。当鼠标左键点击如果击中某个形状则保持按住鼠标左键便可拖动该击中的形状。
(5)仿照“形状”菜单实现填充颜色以及画笔类型菜单供用户选择填充形状的颜色(黑色、白色、红色、绿色、蓝色、黄色等)以及描绘形状边框的画笔的类型(实线、虚线)
求大神的源程序~ 913369187@qq.com 展开
1个回答
展开全部
只提指导,没有源码。
在 Java 中要自定义组件,一般是覆盖掉 protected void paintComponent(Graphics g); 方法就可以了,对于你这个类似画笔的程序,首先,整个画布是一个自定义的继承自像 JPanel 一样的东西,不过我们需要覆盖它的 paintComponent 方法,因为:一、我们需要在当鼠标拖放一个东西时我们移动这个选中的图形时记住它的位置;二、设定 label 时需要保存它的 Label。三、知道图形的形状。
,然后在 paintComponent 时依次画出各个图形来。
要绘图:
1、直线,g.drawLine(x,y,x2,y2); // 参数分别是起止点坐标。
2、矩形,g.fillRect(x, y, w, h); // 参数分别是左上角坐标和宽及高。
3、椭圆,g.fillOval(x, y, w, h); // 参数分别是椭圆形的外切矩形的左上角坐标及宽和高,当w 和 h 相等时是个圆。
准备绘图前 g.setColor() 设置前景色;先把整个画布用 g.fillRect() 涂成白色,再分别画各个图形,最后绘制 Label 应该在画图形之后再做。
移动图形,是给 画布组件 addMouseMotionListener 来监听事件的,在拖动时先通过 mouseDragged 事件的 MouseEvent.point 知道它的位置是在哪个图形的内部,之后的移动就修改这个图形的位置。
在 Java 中要自定义组件,一般是覆盖掉 protected void paintComponent(Graphics g); 方法就可以了,对于你这个类似画笔的程序,首先,整个画布是一个自定义的继承自像 JPanel 一样的东西,不过我们需要覆盖它的 paintComponent 方法,因为:一、我们需要在当鼠标拖放一个东西时我们移动这个选中的图形时记住它的位置;二、设定 label 时需要保存它的 Label。三、知道图形的形状。
,然后在 paintComponent 时依次画出各个图形来。
要绘图:
1、直线,g.drawLine(x,y,x2,y2); // 参数分别是起止点坐标。
2、矩形,g.fillRect(x, y, w, h); // 参数分别是左上角坐标和宽及高。
3、椭圆,g.fillOval(x, y, w, h); // 参数分别是椭圆形的外切矩形的左上角坐标及宽和高,当w 和 h 相等时是个圆。
准备绘图前 g.setColor() 设置前景色;先把整个画布用 g.fillRect() 涂成白色,再分别画各个图形,最后绘制 Label 应该在画图形之后再做。
移动图形,是给 画布组件 addMouseMotionListener 来监听事件的,在拖动时先通过 mouseDragged 事件的 MouseEvent.point 知道它的位置是在哪个图形的内部,之后的移动就修改这个图形的位置。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询