package com.mr.draw;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
//Graphics联系使用不同的方法实现不同图像的绘制,如:drawLine()方法可以绘制直线,drawRect()方法可以绘制矩形
//Graphics2D包含Graphics并且加强过:可以使用不同的类来表示不同的形状如line2D直线类
//鼠标
import java.awt.event.MouseAdapter;//鼠标监听实现类
import java.awt.event.MouseEvent;//鼠标事件
import java.awt.event.MouseMotionAdapter;//鼠标移动监听
//工具栏
import java.awt.BorderLayout;//窗体布局
import javax.swing.ButtonGroup;//按钮组
import javax.swing.JButton;//按钮类
import javax.swing.JToggleButton;//可以显示状态的按钮
import javax.swing.JToolBar;//工具栏
//画笔
import java.awt.BasicStroke;//基本画笔
import java.awt.event.ActionEvent;//动作事件
import java.awt.event.ActionListener;//动作监听
//颜色选择对话框
import javax.swing.JColorChooser;
//绘制图形功能
import java.awt.geom.Ellipse2D;//圆形
import java.awt.geom.Rectangle2D;//方形
import com.mr.util.FrameGetShape;//窗体获取图形的接口
import com.mr.util.ShapeWindow;//选择图形的小节面
import com.mr.util.Shapes;//图形的类
/**
* draw(Shape form)绘制空心形状
* fill(shape form)实心 form是指实现shape接口的对象
* Ellipse2D 描述窗体矩形定义的椭圆
* Rectangle2D 描述通过位置和尺寸定义的矩形
*/
//保存图片
import com.mr.util.DrawImageUtil;
//添加菜单栏组件
import javax.swing.JMenuBar;//菜单栏,像工具栏一样,相当于一个底座功能。蒋添加的菜单都显示在窗体上
import javax.swing.JMenu;//菜单,显示在菜单栏中,可以单击弹出菜单项
import javax.swing.JMenuItem;//菜单项,可以触发点击事件,实现具体功能
//添加水印
import java.awt.AlphaComposite;
import java.awt.Font;//设置字体
import javax.swing.JOptionPane;//
//改变图标功能
import java.awt.Image;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.Cursor;
import javax.swing.ImageIcon;//用于获取图片对象
//引入窗体类
//alt+/ 快速导入
public class DrawPictureFrame extends JFrame implements FrameGetShape{//继承窗体类
//创建一个8位BGR颜色分量的图像
BufferedImage image =new BufferedImage(570,390,BufferedImage.TYPE_INT_BGR);
Graphics gs=image.getGraphics();//获得图像的绘画对象
Graphics2D g=(Graphics2D) gs; //获得绘画对象转换为Graphics2D类型
DrawPictureCanvas canvas =new DrawPictureCanvas();//创建画布对象
Color foreColor=Color.BLACK;//定义前景色 棕色
Color backgroundColor =Color.WHITE; //定义背景色 白色
//鼠标事件
int x=-1; //上次鼠标绘制点的横坐标
int y=-1; //上次鼠标绘制点的纵坐标
boolean rubber=false; //橡皮标识变量
private JToolBar toolBar;//工具栏
private JButton eraserButton;//橡皮
private JToggleButton strokeButton1;//细线按钮
private JToggleButton strokeButton2;//粗线按钮
private JToggleButton strokeButton3;//较粗按钮
private JButton backgroundButton;//背景色按钮
private JButton foregroundButton;//前背景色按钮
private JButton clearButton;//清除按钮
private JButton saveButton;//保存按钮
private JButton shapeButton;//图像按钮
boolean drawShape =false;//画图形标志变量
Shapes shape;//绘制图形
//菜单
private JMenuItem strokeMenuItem1;//细线菜单
private JMenuItem strokeMenuItem2;//粗线菜单
private JMenuItem strokeMenuItem3;//较粗
private JMenuItem clearMenuItem;//清除菜单
private JMenuItem foregroundMenuItem;//前景菜单
private JMenuItem backgroundMenuItem;
private JMenuItem eraserMenuItem;//橡皮菜单
private JMenuItem exitMenuItem;//跳出菜单
private JMenuItem saveMenuItem;//保存菜单
//水印
private JMenuItem shuiyinMenuItem;//水印菜单
private String shuiyin ="";//水印字符内容
//简笔画
private PictureWindow picWindow;//简笔画展示窗体
private JButton showPicButton;//展开简笔画
/**
* 构造方法,添加组件的初始化方法
*/
public DrawPictureFrame() {
setResizable(false); //窗体不能改变大小
setTitle("画图程序(水印内容:["+ shuiyin+ "])");//设置标题,添加水印内容
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗口关闭则停止程序
setBounds(500,100,574,460); //设置窗口位置 Bounds:边界
init(); //组件初始化 init();
addListener(); //添加组件监听
}//DrawPictureFrame()结束
/**
* 组件初始化
*/
private void init() {
g.setColor(backgroundColor);//用背景色设置绘图对象的颜色
g.fillRect(0, 0, 570, 390);//使用背景色填充整个画布
g.setColor(foreColor); //设置画布的图像
canvas.setImage(image);//设置画布的图像
getContentPane().add(canvas);//将画布添加到窗体容器默认布局的中部位置
toolBar =new JToolBar();//初始化工具栏
getContentPane().add(toolBar,BorderLayout.NORTH);//工具栏放至船体北方
//简笔画
//showPicButton =new JButton("展开简笔画");//初始化按钮对象,并添加文本内容
showPicButton =new JButton();
showPicButton.setToolTipText("展开简笔画");//设置鼠标悬停提示
showPicButton.setIcon(new ImageIcon("src/img/icon/展开.png"));//设置鼠标图案
toolBar.add(showPicButton);////工具栏添加按钮
//saveButton=new JButton("保存");//初始化按钮对象,并添加文本内容
saveButton=new JButton();
saveButton.setToolTipText("保存");
saveButton.setIcon(new ImageIcon("src/img/icon/保存.png"));
toolBar.add(saveButton);//工具栏添加按钮
toolBar.addSeparator();//添加分割线
//初始化有选中状态的按钮对象,并添加文本
strokeButton1 =new JToggleButton();
strokeButton1.setToolTipText("细线");
strokeButton1.setIcon(new ImageIcon("src/img/icon/1像素线条.png"));
strokeButton1.setSelected(true);//细线按钮处于选中状态
toolBar.add(strokeButton1);//工具栏添加按钮
strokeButton2 =new JToggleButton();
strokeButton2.setToolTipText("粗线");
strokeButton2.setIcon(new ImageIcon("src/img/icon/2像素线条.png"));
toolBar.add(strokeButton2);//工具栏添加按钮
strokeButton3 =new JToggleButton();
strokeButton3.setToolTipText("较粗");
strokeButton3.setIcon(new ImageIcon("src/img/icon/4像素线条.png"));
//把上面三个按顺序,画笔粗细按钮组,保证同时只有一个按钮被选中
ButtonGroup strokeGroup =new ButtonGroup();
strokeGroup.add(strokeButton1);//按钮组添加按钮
strokeGroup.add(strokeButton2);
strokeGroup.add(strokeButton3);
toolBar.add(strokeButton3);//工具栏添加按钮
toolBar.addSeparator();//添加分割线
backgroundButton=new JButton("");//初始化按钮对象,并添加文本内容
backgroundButton.setToolTipText("背景颜色");
backgroundButton.setIcon(new ImageIcon("src/img/icon/背景色.png"));
toolBar.add(backgroundButton);//工具栏添加按钮
foregroundButton =new JButton();
foregroundButton.setToolTipText("画笔颜色");
foregroundButton.setIcon(new ImageIcon("src/img/icon/前景色.png"));
toolBar.add(foregroundButton);
toolBar.addSeparator();//添加分割线
shapeButton =new JButton();
shapeButton.setToolTipText("图形");
shapeButton.setIcon(new ImageIcon("src/img/icon/形状.png"));
toolBar.add(shapeButton);
clearButton =new JButton();
clearButton.setToolTipText("清除");
cl
没有合适的资源?快使用搜索试试~ 我知道了~
java学习用,一起来画画.rar
共73个文件
png:36个
class:28个
java:4个
需积分: 1 1 下载量 19 浏览量
2023-03-16
14:54:04
上传
评论
收藏 368KB RAR 举报
温馨提示
基于Java编写的画画程序
资源推荐
资源详情
资源评论
收起资源包目录
一起来画画.rar (73个子文件)
一起来画画
lib
DrawUtil.mr.jar 63KB
.classpath 550B
.settings
org.eclipse.jdt.core.prefs 781B
org.eclipse.core.resources.prefs 57B
src
module-info.java 76B
img
picture
美人鱼.png 43KB
船.png 30KB
机器猫.png 16KB
小猴.png 46KB
猪头.png 36KB
icon
形状.png 17KB
背景色.png 17KB
1像素线条.png 17KB
4像素线条.png 17KB
2像素线条.png 17KB
前景色.png 17KB
清除.png 17KB
保存.png 17KB
鼠标橡皮.png 18KB
画笔.png 17KB
橡皮.png 17KB
展开.png 17KB
隐藏.png 17KB
com
mr
draw
DrawPictureFrame.java 26KB
PictureWindow.java 3KB
DrawPictureCanvas.java 650B
bin
module-info.class 201B
img
picture
美人鱼.png 43KB
船.png 30KB
机器猫.png 16KB
小猴.png 46KB
猪头.png 36KB
icon
形状.png 17KB
背景色.png 17KB
1像素线条.png 17KB
4像素线条.png 17KB
2像素线条.png 17KB
前景色.png 17KB
清除.png 17KB
保存.png 17KB
鼠标橡皮.png 18KB
画笔.png 17KB
橡皮.png 17KB
展开.png 17KB
隐藏.png 17KB
com
mr
draw
DrawPictureFrame$12.class 943B
DrawPictureFrame$2.class 836B
DrawPictureFrame$4.class 950B
PictureWindow$1.class 877B
DrawPictureFrame$17.class 1KB
DrawPictureFrame$10.class 2KB
DrawPictureFrame$22.class 1KB
DrawPictureFrame$13.class 940B
DrawPictureFrame$15.class 1KB
DrawPictureFrame$6.class 956B
DrawPictureFrame$3.class 2KB
DrawPictureFrame$20.class 1KB
DrawPictureFrame$11.class 1KB
DrawPictureFrame$8.class 1KB
DrawPictureFrame$21.class 1KB
DrawPictureFrame$5.class 950B
PictureWindow.class 2KB
DrawPictureFrame$19.class 1KB
DrawPictureFrame$9.class 1KB
DrawPictureFrame$7.class 1KB
DrawPictureFrame$16.class 2KB
DrawPictureFrame$1.class 2KB
DrawPictureCanvas.class 802B
DrawPictureFrame.class 9KB
DrawPictureFrame$18.class 1KB
DrawPictureFrame$14.class 1KB
PictureWindow$2.class 905B
.project 391B
共 73 条
- 1
资源评论
诗鱼poem、
- 粉丝: 60
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功