Java编写的画图板,功能非常齐全,完整代码 附详细设计报告
今天为大家分享一个java语言编写的图书管理程序-003,目前系统功能已经很全面,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步
开发环境
开发语言为Java,开发环境Eclipse或者IDEA都可以,数据为MySQL。运行主程序,或者执行打开JAR文件即可以运行本程序。
系统框架
利用JDK自带的SWING框架开发。纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档。
主要功能
Java编写的画图板,功能非常齐全,代码可以执行运行运行。
本次课程设计是利用Java 语言来进行开发画图面板,主要是利用Java语言中自带的Graphics2D强大的画图功能来进行画图的。
Graphics2D继承自Graphics,它扩展了Graphics的绘图功能,拥有更强大的二维图形处理能力,提供对几何形状、坐标转换、颜色管理以及文字布局等更精确的控制。
Graphics2D定义了几种方法,用于添加或改变图形的状态属性。可以通过设定和修改状态属性,指定画笔宽度和画笔的连接方式,设定平移、旋转、缩放或修剪变换图形,以及设定填充图形的颜色和图案等。本次画图面板的实现逻辑如下:
步骤1 定一个基类Shape,继承MouseMotionListener,里面记录了
/** 画笔大小 */
protected float stroke;
/** 画笔颜色 */
protected Color color;
/** 图形类型 */
protected String type;//要画的图形类型
protected int startX = 0;//起始点X坐标
protected int startY = 0;//起始点X坐标
protected int endX = 0;//终止点X坐标
protected int endY = 0;//终止点Y坐标
protected int currentX = 0;//当前X坐标
protected int currentY = 0;//当前Y坐标
protected int currentD = 0;//移动距离
public List<Point> pointList=new ArrayList<Point>();//中途所有经过点的坐标
步骤2 所有类型的图形(文字,直线),都继承Shape
步骤3 当点击不同图标的时候,调用不同的类型的Draw方法,
(1)画直线的时候调用
graphics2d.drawLine(startX, startY, endX, endY);
(2) 画矩形时候调用
xS[0] = currentX;
yS[0] = currentY;
xS[1] = currentX + currentD;
yS[1] = currentY;
xS[2] = currentX+ currentD / 2;
yS[2] = (int)(currentY - currentD / 2 * 1.732);
graphics2d.setColor(color);
graphics2d.setStroke(new BasicStroke(stroke));
graphics2d.drawRect(currentX, currentY, currentD, currentD);
画圆形的时候调用
graphics2d.drawOval(currentX, currentY, currentD, currentD);
(4) 画笔画的时候
int[] arrayx = new int[getPointList().size()];
int[] arrayy = new int[getPointList().size()];
for (int i = 0; i < getPointList().size(); i++) {
Point point = (Point)getPointList().get(i);
arrayx[i]=point.getX();
arrayy[i]=point.getY();
}
graphics2d.setColor(color);
graphics2d.setStroke(new BasicStroke(stroke));
graphics2d.drawPolyline(arrayx,arrayy,getPointList().size());
画橡皮檫的时候
graphics2d.setColor(Color.WHITE);
graphics2d.setStroke(new BasicStroke(8.5f));
int[] arrayx = new int[getPointList().size()];
int[] arrayy = new int[getPointList().size()];
for (int i = 0; i < getPointList().size(); i++) {
Point point = (Point)getPointList().get(i);
arrayx[i]=point.getX();
arrayy[i]=point.getY();
}
graphics2d.setColor(color);
graphics2d.setStroke(new BasicStroke(stroke));
graphics2d.drawPolyline(arrayx,arrayy,getPointList().size());
步骤4 所有类型的图形(文字,直线),都继承Shape,当鼠标按键,或者拖动的时候,在面板上进行重绘,把存储在List中的Shape,重新绘制一遍。得到我们要画的最终的图形,保存图片即可。
1 画直线和文字
2画曲线
3 画矩形
4 画椭圆
5 橡皮擦
6 撤销和重做功能
7 从画图板导入图片,并且对图片进行保存
8 设置画图的颜色和像素大小
这个项目涵盖了java 窗体编程的各种知识,包括UI界面设计、时间处理、文件操作等。通过这个项目能快速提升java 窗体编程,是非常好的一个项目。代码可以直接运行,没有任何bug。有详细的操作手册
实现效果
1 主界面
2 画直线和圆圈
3 设置属性(颜色、字体大小)
4 保存结果
点击顶部边工具栏上的保存图标,出现保存图片的对话框,选择保存路径,完成图片的保存。
关键代码实现
package com.huatu.ui;import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;import javax.swing.JLabel;/***/
public abstract class Shape extends JLabel implements MouseMotionListener {private static final long serialVersionUID = 1L;/** 画笔大小 */protected float stroke;/** 画笔颜色 */protected Color color;/** 图形类型 */protected String type;protected int startX = 0;protected int startY = 0;protected int endX = 0;protected int endY = 0;protected int currentX = 0;protected int currentY = 0;protected int currentD = 0;protected Shape(Color color1, float stroke1, String type1, int x, int y) {type = type1;color = color1;stroke = stroke1;startX = endX = currentX = x;startY = endY = currentY = y;addMouseMotionListener(this);}public void mouseDragged(MouseEvent mouseevent) {// 变成十字架拖放的时候,需要计算圆形和矩形if (DrawingBoard.cursor == 1) {endX = mouseevent.getX();endY = mouseevent.getY();currentD = Math.abs(startX - endX);if (startX > endX) {currentX = endX;}if (startY > endY) {currentY = endY;}} else {// 拖放完毕之后再次点击只需要控制位置即可currentX = mouseevent.getX();currentY = mouseevent.getY();}}public void mouseMoved(MouseEvent mouseevent) {// 鼠标移动}/*** 调用画板来画图* @param graphics2d 画板的graphics*/public abstract void draw(Graphics2D graphics2d);public String getType() {return type;}public void setType(String type) {this.type = type;}}
Java编写的画图板,功能非常齐全,完整代码 附详细设计报告相关推荐
- Java开发的KTV系统 功能非常齐全 完整源码
今天为大家分享一个java语言编写的KTV系统,目前系统功能已经很全面,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步 开发环境 开发语言 ...
- JAVA美颜相机入门(兼具图像处理和画图板功能)
美颜相机已经成为当代年轻人不可或缺的自拍神器,其具有自动美肌,完美保留细节,让照片告别模糊等功能.或许我们会觉得编写这样一个具有如此强大功能的美颜相机一定需要庞大而且复杂的代码段,其实不然,即使对于初 ...
- java,制作简易画图板
简易画图板 前些日子,我学习了关于xp系统简易画图板的制作,虽然我写的画图板功能不多,但这是我接触java以来完成的第一个项目,制作的时候感觉很艰难,有的时候明明知道思路,却因为不知道具体的方法而走了 ...
- Java学习 之 画图板 立方体
Java学习 之 画图板 立方体 步骤 画小立方体 画3 *3 *3的立方体 递归画出更大的立方体 步骤 1.先画一个小立方体,三个面填充不一样的颜色 2.再由小立方体搭成一个3 * 3 * 3的立方 ...
- javascript编写_如何在JavaScript中使用解构来编写更简洁,功能更强大的代码
javascript编写 by Ashay Mandwarya ?️?? 由Ashay Mandwarya提供吗? 如何在JavaScript中使用解构来编写更简洁,功能更强大的代码 (How to ...
- Python编程,使用turtle画出漂亮的雪花--完整代码绘画实现洁白的雪绒花~~
Python编程,使用turtle画出漂亮的雪花--完整代码实现洁白的雪绒花~~ Python中turtle库,可以方便的让你实现各种各样的功能.简单易用,有的时候能够创作出,你想像不到的漂亮图案.今 ...
- [微信小程序]聊天对话(文本,图片)的功能(完整代码附效果图)
相关文章: 1.小程序聊天群,发送语音,文字,图片. 2.微信小程序集成腾讯IM,实现实时音视频通话,1V1聊天 3.云开发微信小程序聊天群 4.接入网易云信IM即时通讯的微信小程序聊天室 5.微信小 ...
- Java版简易画图板的实现
Windows的画图板相信很多人都用过,这次我们就来讲讲Java版本的简易画板的实现. 基本的思路是这样的:画板实现大致分三部分:一是画板界面的实现,二是画板的监听以及画图的实现,三是画板的重绘.(文 ...
- Java制作简易画图板
简易画图板 基本思路 运行效果 基本思路 画图板需要满足的功能有: 画线,画三角形,画矩形,画多边形,画曲线 设置不同颜色的画笔 改变窗口大小或最小化窗口后重新打开时图案不消失 画图方法的编写: 创建 ...
最新文章
- 快速上手的Glide4.x教程
- 高中计算机考试编程题,2020年高中信息技术模块测试卷5(算法与程序设计) 信息技术试题(PDF版无答案)...
- 字符集之间转换(UTF-8,UNICODE,Gb2312) c++
- Solidity的Bytecode和Opcode简介
- 使用report COM_PRODUCT_DELETE_SINGLE删除product
- html5图片剪切板,JavaScript 网页端复制图片到剪切板
- 【Level 08】U08 Positive Attitude L2 Into the world of a bookworm
- php对接xenserver,XenServer虚拟机管理工具XenCenter安装配置图文教程
- 使用YUI3创建Popup弹出层
- AXI 总线基本概念 - 如何理解outstanding传输
- html做一个课程表
- Android Studio 打包生成正式apk(XXX-release.apk)的两种方式
- Gym100015 I Identity Checker 栈容器使用,数学
- 输出纹波和纹波电流测试规范分享
- 安装Windows 10X 教你如何安装Win10X正式版 及下载地址Win10X 20279.1002
- Private Set Intersection(PSI)
- 怎么把文字转换成朗读,快来看这几款文字转语音朗读工具
- 【D3.js 学习总结】12、D3布局-集群图
- PyGmae:有限状态机实践(十四)
- TCP连接建立/断开