Java课程设计简易绘图板_Java课程设计:高级绘画板的多功能实现(多种颜色图形)...

这是一个Java课程设计项目,旨在创建一个简单的绘图应用程序,用户可以通过选择不同的图形(如直线、椭圆、矩形等)、颜色和画笔粗细,使用鼠标进行绘图。程序实现了图形选择、颜色和画笔设置、鼠标操作绘图以及保存图片等功能。主要技术包括Graphics2D、MouseListener和MouseMotionListener接口。代码示例展示了各种图形的绘制方法。
摘要由CSDN通过智能技术生成

课程题目描述

利用GUI方法实现一个较为简单的绘图应用程序。用户可以选择要画的图形(如线,椭圆或圆,矩形),选择方式不限,例如单选按钮、下拉框、菜单等方式,可以选择画笔颜色和画笔粗细,用鼠标单击和拖曳等动作绘图,并保存图片。

考虑到画图板的实际需要,画图板要实现保存图片,用于保存当前图片至本地;选择需要绘制的图形,用于选择需要绘制的图形样式,如直线、矩形、椭圆等;设置画笔色以及画笔大小,用于设置画笔颜色和当前画笔粗细;擦除错误操作等。

本软件的重难点为主窗体的设计、菜单栏和工具栏的设计、事件响应的处理、画图的基本功能的实现。

功能的实现

1.如何选择要画的图形。

图形的选择有多种实现方式,如菜单、单选按钮、下拉框等,这里我们选用了单选按钮来实现。

基本图形按钮包括:U-def(随笔画)、Line(直线)、Round(椭圆)、Rect(矩形)、RRect(圆角矩形)、Ereaser(橡皮擦)。

任何一个图形对象使用paint()方法为绘图工具就可以画出线条、矩形、圆形等各种图形来。该方法为:

Public void paint(Graphics g);

绘图工具paint()通过Graphics对象绘制具体的图形。

2.选择画笔的颜色和粗细。

画笔颜色按钮包括:黑 ,深蓝 ,天蓝 ,深灰 ,浅灰

绿 ,粉 ,黄 ,默认颜色为黑色。

使用Graphics类设置颜色,首先要创建颜色类Color的对象,创建颜色对象的构造方法为:

Public Color(int r,int g,int b);

也可以使用Color类的静态常量作为颜色对象的参数,创建颜色对象的构造方法为:

Public Color(Color.颜色静态常量);

画笔粗细按钮包括:1、3、5、7、9、11、13、15、17共九个级别,默认状态为1。

使用BasicStroke来实现控制线条粗细。

例如,先使用Line2D类创建直线对象,再使用BasicStroke类创建一个供画笔paint()方法选择线条粗细的对象。BasicStroke类的一个常用构造方法为:

Public BasicStroke(float width,int cap,int join);

3.鼠标单击和拖拽等动作绘图。

要能够让图形界面接收到用户的操作,就必须给各个组件添加事件处理机制。在Java中,当用户使用鼠标进行操作时,就会产生鼠标事件MouseEvent。对MouseEvent事件的响应是实现MouseListener接口或MouseMotionListener接口,或者是继承MouseAdapter类,来实现鼠标适配器MouseAdapter提供的方法。

界面展示(部分)

1.功能界面

804a9033febe797685db9405ae4d32b2.png

2.颜色选取

30785e6a197526fdaede393b2e0beb5b.png

3.文件保存

f58817b33e0684d0d082757da3415044.png

代码示例(部分)

/*****************************************************************************

**

* 下面是各种基本图形单元的子类,都继承自父类drawings ,请仔细理解继承的概念

******************************************************************************

**/

@SuppressWarnings("serial")

class Line extends drawings

// 直线类

{

void draw(Graphics2D g2d) {

g2d.setPaint(new Color(R, G, B));

g2d.setStroke(new BasicStroke(stroke, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL));

g2d.drawLine(x1, y1, x2, y2);

}

}

@SuppressWarnings("serial")

class Rect extends drawings

// 矩形类

{

void draw(Graphics2D g2d) {

g2d.setPaint(new Color(R, G, B));

g2d.setStroke(new BasicStroke(stroke));

g2d.drawRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1 - x2), Math.abs(y1 - y2));

}

}

@SuppressWarnings("serial")

class fillRect extends drawings

// 实心矩形类

{

void draw(Graphics2D g2d) {

g2d.setPaint(new Color(R, G, B));

g2d.setStroke(new BasicStroke(stroke));

g2d.fillRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1 - x2), Math.abs(y1 - y2));

}

}

@SuppressWarnings("serial")

class Oval extends drawings

// 椭圆类

{

void draw(Graphics2D g2d) {

g2d.setPaint(new Color(R, G, B));

g2d.setStroke(new BasicStroke(stroke));

g2d.drawOval(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1 - x2), Math.abs(y1 - y2));

}

}

@SuppressWarnings("serial")

class fillOval extends drawings

// 实心椭圆

{

void draw(Graphics2D g2d) {

g2d.setPaint(new Color(R, G, B));

g2d.setStroke(new BasicStroke(stroke));

g2d.fillOval(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1 - x2), Math.abs(y1 - y2));

}

}

@SuppressWarnings("serial")

class Circle extends drawings

// 圆类

{

void draw(Graphics2D g2d) {

g2d.setPaint(new Color(R, G, B));

g2d.setStroke(new BasicStroke(stroke));

g2d.drawOval(Math.min(x1, x2), Math.min(y1, y2), Math.max(Math.abs(x1 - x2), Math.abs(y1 - y2)),

Math.max(Math.abs(x1 - x2), Math.abs(y1 - y2)));

}

}

@SuppressWarnings("serial")

class fillCircle extends drawings

// 实心圆

{

void draw(Graphics2D g2d) {

g2d.setPaint(new Color(R, G, B));

g2d.setStroke(new BasicStroke(stroke));

g2d.fillOval(Math.min(x1, x2), Math.min(y1, y2), Math.max(Math.abs(x1 - x2), Math.abs(y1 - y2)),

Math.max(Math.abs(x1 - x2), Math.abs(y1 - y2)));

}

}

@SuppressWarnings("serial")

class RoundRect extends drawings

// 圆角矩形类

{

void draw(Graphics2D g2d) {

g2d.setPaint(new Color(R, G, B));

g2d.setStroke(new BasicStroke(stroke));

g2d.drawRoundRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1 - x2), Math.abs(y1 - y2), 50, 35);

}

}

@SuppressWarnings("serial")

class fillRoundRect extends drawings

// 实心圆角矩形类

{

void draw(Graphics2D g2d) {

g2d.setPaint(new Color(R, G, B));

g2d.setStroke(new BasicStroke(stroke));

g2d.fillRoundRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1 - x2), Math.abs(y1 - y2), 50, 35);

}

}

@SuppressWarnings("serial")

class Pencil extends drawings

// 随笔画类

{

void draw(Graphics2D g2d) {

g2d.setPaint(new Color(R, G, B));

g2d.setStroke(new BasicStroke(stroke, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL));

g2d.drawLine(x1, y1, x2, y2);

}

}

@SuppressWarnings("serial")

class Rubber extends drawings

// 橡皮擦类

{

void draw(Graphics2D g2d) {

g2d.setPaint(new Color(255, 255, 255));

g2d.setStroke(new BasicStroke(stroke + 4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL));

g2d.drawLine(x1, y1, x2, y2);

}

}

@SuppressWarnings("serial")

class Word extends drawings

// 输入文字类

{

void draw(Graphics2D g2d) {

g2d.setPaint(

new Color(R, G, B));

g2d.setFont(new Font(s2, x2 + y2, ((int) stroke) * 18));

if (s1 != null)

g2d.drawString(s1, x1, y1);

}

}

项目总结

画图板软件的开发,使我们收获了更多的知识。而这些知识是实践中才能学得到的。这也正验证了一句话:纸上得来终觉浅,绝知此事要躬行。没错,学习不仅仅是大脑的思考,更要有实践的配合。

有需要源码的可以私信或者留言评论,我看到之后就会回复(无偿索要源码者勿扰,毕竟都是一点一点敲出来的)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值