Java实现简单小画板

网友投稿 274 2022-07-24


java制作简单画板,包括两个类,一个主要画板类Drawpad,一个画板监听器DrawListener类。

1、Drawpad类,包括画板,画板功能设计,保存图片等

package Java课程设计;

import java.awt.Graphics;

import javax.imageio.ImageIO;

import javax.print.DocFlavor.STRING;

import javax.swing.ImageIcon;

import javax.swing.JDialog;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTextArea;

import javax.swing.JTextField;

import javax.swing.UIManager;

import javax.swing.UnsupportedLookAndFeelException;

import java.awt.AWTException;

import java.awt.BasicStroke;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Component;

import java.awt.Container;

import java.awt.Dimension;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.Rectangle;

import java.awt.Robot;

import java.awt.Shape;

import java.awt.Window;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.image.BufferedImage;

import java.awt.image.ColorModel;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.util.ArrayList;

import javax.swing.JButton;

import javax.swing.filechooser.FileNameExtensionFilter;

public class Drawpad {

static Color color1;

public static void main(String[] args) {

Drawpad dp = new Drawpad();

dp.initUI();

}

//创建一个JFrame图形窗口

public void initUI() {

JFrame jf = new JFrame();

jf.setTitle("创意画图板(勿拖动)");

jf.setSize(1500,1000);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭时退出

jf.setLocationRelativeTo(null);//居中,不用定位窗口大小

//创建字体,之后所有的字体为该字体

Font f=new Font("方正仿宋简体", Font.BOLD, 20);

//创建画笔监听器

DrawListener dl = new DrawListener();

//创建读取图片BufferedImage(将图片加载到drawPanel面板中)和画笔g,画笔g为在保存图片上进行图画。

BufferedImage bi = new BufferedImage(1300,800, BufferedImage.TYPE_INT_ARGB);

Graphics2D g = bi.createGraphics();

//初始化时填充白色

g.setColor(Color.WHITE);

//先将图片填充为白色

g.fillRect(0, 0, 1300,800);

//设置增加菜单栏,包括保存和新建两个按钮

JMenuBar box=new JMenuBar();

//在窗体上加菜单条,做一个菜单条,是菜单条,不是工具栏

//创建menubtn1保存按钮,并加上监听器,以图片的形式保存绘画板上的内容

JButton menubtn1=new JButton("保存");

//为保存按钮注册监听器

menubtn1.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent arg0) {

//创建文件保存窗口

JFileChooser f=new JFileChooser("保存");

int returnVal = f.showSaveDialog(null);

File file1=null;

if(returnVal == JFileChooser.APPROVE_OPTION) {

file1 =f.getSelectedFile();

String name = f.getName(file1);

try {

ImageIO.write(bi, "PNG", new File(f.getCurrentDirectory(),name+".png"));

} catch (IOException e) {

//需抛出异常

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

});

/*JButton menubtn2=new JButton("打开");

//为打开按钮注册监听器

menubtn1.addActionListener(new ActionListener(){

@Override

//获取当前画笔粗细

public void actionPerformed(ActionEvent arg0) {

BufferedImage bimg = null;

JFileChooser f=new JFileChooser("打开");

int returnVal = f.showOpenDialog(null);

File file1=null;

if(returnVal == JFileChooser.APPROVE_OPTION) {

file1 =f.getSelectedFile();

String name = f.getName(file1);

try {

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

});*/

//创建menubtn3退出按钮,并加上监听器,退出程序

JButton menubtn3=new JButton("退出");

menubtn3.addActionListener(new ActionListener(){

@Override

//获取当前画笔粗细

public void actionPerformed(ActionEvent arg0) {

int ret=JOptionPane.showConfirmDialog(null, "你确定要退出吗", "确认退出", JOptionPane.YES_NO_OPTION);

if(ret==JOptionPane.YES_OPTION){

//“确认”退出程序

System.exit(0);

}

}

});

box.add(menubtn1);

// box.add(menubtn2);

box.add(menubtn3);

//jf.setJMenuBar(box);

jf.setJMenuBar(box);

//jf用BorderLayout布局

//北边,画板模式功能栏

JPanel funcPanel=new JPanel();

jf.add(funcPanel,BorderLayout.NORTH);

//中间,画布

JPanel drawPanel=new JPanel();

jf.add(drawPanel,BorderLayout.CENTER);

drawPanel.setPreferredSize(new Dimension(1000,700));

drawPanel.setBackground(dl.background);

//一定要在画布上加上监听器!!1若画布没有加上监听器,无法显示

drawPanel.addMouseListener(dl);

drawPanel.addMouseMotionListener(dl);

//南边,为画笔颜色选择按钮

JPanel colorPanel=new JPanel();

jf.add(colorPanel,BorderLayout.SOUTH);

//右边,为选择背景颜色按钮、画笔粗细选择按钮

JPanel backgroundPanel=new JPanel();

jf.add(backgroundPanel,BorderLayout.EAST);

backgroundPanel.setPreferredSize(new Dimension(150,1000));

//左边,获取当前状态如:背景颜色、画笔颜色、画笔性质

JPanel nowPanel=new JPanel();

jf.add(nowPanel,BorderLayout.WEST);

nowPanel.setPreferredSize(new Dimension(180,1000));

//左边放入当前状态Panel

nowPanel.setBackground(Color.WHITE);

JLabel label2=new JLabel("当前背景颜色");

label2.setFont(f);

nowPanel.add(label2);

//放入当前背景颜色

JButton nowbackgroundColor=new JButton();

nowbackgroundColor.setPreferredSize(new Dimension(60,60));

nowbackgroundColor.setBackground(Color.WHITE);//背景初始化为灰色

nowPanel.add(nowbackgroundColor);

//放入当前画笔

JLabel label3=new JLabel("请选择画笔模式");

label3.setFont(f);

nowPanel.add(label3);

//放入当前画笔颜色

JButton nowColor=new JButton();

nowColor.setPreferredSize(new Dimension(60,60));

nowColor.setBackground(Color.BLACK);//画笔颜色初始化为黑色色

nowPanel.add(nowColor);

//获取当前画笔模式

JLabel label4=new JLabel("当前画笔模式");

label4.setFont(f);

nowPanel.add(label4);

JTextField text=new JTextField(dl.btncontent); //获得选择画笔模式的按钮内容,得到当前画笔模式

text.setPreferredSize(new Dimension (160,60));

text.setFont(f);

text.setEditable(false); //不可改

nowPanel.add(text);

//获取当前画笔粗细状态

JLabel label6=new JLabel("当前画笔粗细(中)"); //默认粗细为中

label6.setFont(f);

nowPanel.add(label6);

JTextField text1=new JTextField("请选择画笔粗细");

text1.setPreferredSize(new Dimension (160,60));

text1.setFont(f);

text1.setEditable(false); //不可编辑

nowPanel.add(text1);

//输入需要添加的文字

JLabel label7=new JLabel("请输入文字:");

label7.setFont(f);

nowPanel.add(label7);

JTextField text2=new JTextField();

text2.setPreferredSize(new Dimension (160,60));

text2.setFont(f);

nowPanel.add(text2);

JLabel label8=new JLabel("请输入文字样式:");

label8.setFont(f);

nowPanel.add(label8);

JTextField text3=new JTextField("方正仿宋简体");

text3.setPreferredSize(new Dimension (160,60));

text3.setFont(f);

nowPanel.add(text3);

JLabel label9=new JLabel("请输入文字大小:");

label9.setFont(f);

nowPanel.add(label9);

JTextField text4=new JTextField("20");

text4.setPreferredSize(new Dimension (160,60));

text4.setFont(f);

nowPanel.add(text4);

//为获取文字内容加一个按钮并加上监听器

JButton getcontent=new JButton("获取文字");

getcontent .setFont(f);

getcontent.setBackground(Color.YELLOW);

getconteUfXpGBant.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

String content=text2.getText();

String mode=text3.getText();

String size=text4.getText();

dl.mode=mode; //获取文字样式

dl.content=content; //获取文字内容

dl.size=size; //获取文字大小

}

});

nowPanel.add(getcontent);

//最后在当前状态画板中加一个清除画布内容的功能

JButton clear=new JButton("清除");

clear.setFont(f);

clear.setBackground(Color.RED);

clear.addActionListener(dl);

nowPanel.add(clear);

//添加按钮到北边(每个按钮写两行代码太多,通过数组方式添加按钮)

//加入标签(选择画笔模式)

JLabel labelh =new JLabel("选择画笔模式");

labelh.setFont(f);

funcPanel.add(labelh);

UfXpGBa //将按钮名字保存在数组中,后依次存储

String[] btnstr= {"画笔","直线","矩形","填充矩形","圆","填充圆","弧线","喷枪","波形","分形","长方体","九宫格递归","文字","橡皮"};

//将画笔状态按钮防置panel中

for( int i=0;i

JButton btn=new JButton(btnstr[i]);

funcPanel.add(btn);

btn .setFont(f);

btn.setBackground(Color.white);

//加上画笔监听器

btn.addActionListener(dl);

//加上监听器:获取当前 画笔模式

btn.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

text.setText(btn.getText()); //在当前模式加入选取的画笔模式

}

});

};

//在BrderLayout布局SOUTH添加选择颜色按钮

JLabel label =new JLabel("选择画笔(橡皮)颜色");

label.setFont(f);

colorPanel.add(label);

//添加颜色按钮

Color[] colorArray = { Color.BLUE, Color.GREEN, Color.RED,

Color.BLACK,Color.ORANGE,Color.PINK,Color.CYAN,

Color.MAGENTA,Color.DARK_GRAY,Color.GRAY,

Color.LIGHT_GRAY,Color.YELLOW,Color.WHITE};

//在布局管理器中添加颜色按钮

for( int i=0;i

JButton button = new JButton();

button.setBackground(colorArray[i]);

button.setPreferredSize(new Dimension(50, 50));

button.addActionListener(dl);

colorPanel.add(button);

//获取当前状态的画笔颜色

button.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

nowColor.setBackground(button.getBackground()); //在当前画笔颜色按钮加入选择的按钮颜色

}

});

};

funcPanel.setBackground(Color.gray);

//添加背景主板颜色按钮,并设置监听器(背景颜色为按钮颜色)

JLabel label1=new JLabel("选择背景颜色");

label1.setFont(f);

backgroundPanel.add(label1);

Color[] backgroundArray= { Color.GREEN, Color.RED,

Color.ORANGE,Color.PINK,Color.CYAN,

Color.MAGENTA,Color.DARK_GRAY,Color.GRAY,

Color.LIGHT_GRAY,Color.YELLOW,Color.WHITE,Color.BLACK};

//将按钮加入进去

for( int i=0;i

JButton button = new JButton();

button.setBackground(backgroundArray[i]);

button.setPreferredSize(new Dimension(50, 50));

backgroundPanel.add(button);

//添加监听器,按下按钮改变背景颜色,同时体现当前状态

button.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent arg0) {

drawPanel.setBackground(button.getBackground()); //将背景颜色改为选取的背景颜色

color1=button.getBackground();

dl.background=color1; //将背景颜色传给DrawListener中的变量

System.out.println(color1);

g.setColor(color1);

g.fillRect(0, 0, 1300,800); //图片画笔填充背景颜色

nowbackgroundColor.setBackground(button.getBackground());

}

});

};

//添加选择画笔粗细的按钮,可选择画笔的粗细

JLabel label5=new JLabel("选择画笔粗细");

label5.setFont(f);

backgroundPanel.add(label5);

String[] Size={"细","中","粗"};

//选择画笔模式的按钮

for(int i=0;i<3;i++){

JButton graphsize=new JButton(Size[i]);

graphsize.setFont(new Font("宋体", Font.BOLD, 15));

graphsize.setBackground(Color.WHITE);

graphsize.setPreferredSize(new Dimension(50, 50));

backgroundPanel.add(graphsize);

graphsize.addActionListener(dl);

graphsize.addActionListener(new ActionListener(){

@Override

//获取当前画笔粗细

public void actionPerformed(ActionEvent e) {

text1.setText(graphsize.getText()); //获取当前画笔模式

}

});

}

jf.setVisible(true);

// 获取这个界面的graphics属性, 画笔 g

//Graphics2D g = (Graphics2D) drawPanel.getGraphics();

//drawPanel.paintComponent(g);

Graphics2D g1= (Graphics2D) drawPanel.getGraphics();

//为画笔添加监听器

drawPanel.addMouseListener(dl);

dl.g = g1;// 右传左

dl.g3 = g;// 右传左

}

}

2、DrawListner类,画板功能监听器

package Java课程设计;

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Container;

import java.awt.Dimension;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.RenderingHints;

import java.awt.Shape;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseMotionListener;

import java.awt.geom.AffineTransform;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextField;

import java.awt.Color;

import java.util.ArrayList;

import java.util.Random;

import Java课程设计.Drawpad;

public class DrawListener implements MouseListener,ActionListener,MouseMotionListener {

//获取画笔

Graphics2D g;

//获取在保存图片上的画笔

Graphics2D g3;

//获取按钮内容

String btnstr;

Color background=Color.white; //背景颜色默认为白色

Color graphcolor=Color.BLACK; //画笔颜色默认为黑色

JButton btn;

int x1, y1, x2, y2;// 声明坐标变量

int x3=400;

int y3=0;

int graphsize=3;//默认为中等画笔

String btncontent="画笔"; //默认画笔模式为画笔

String content; //获取文字中的文字内容

String mode="方正仿宋简体"; //文字样式默认为“方正仿宋简体”

String size="20";

//九宫格递归方法,画出九宫格

public void dg(int x,int y,int width,int height) {

//九宫格函数,九宫格的实现

if(width<3) {

return;

}

if(width>90) {

g.fillRect(x+width/3, y+height/3, width/3, height/3);

g3.fillRect(x+width/3, y+height/3, width/3, height/3);

dg(x, y, width/3, height/3);

dg(x+width/3, y, width/3, height/3);

dg(x+(width/3)*2, y, width/3, height/3);

dg(x, y+height/3, width/3, height/3);

dg(x, y+(height/3)*2, width/3, height/3);

dg(x+width/3, y+height/3, width/3, height/3);

dg(x+width/3, y+(height/3)*2, width/3, height/3);

dg(x+(width/3)*2, y+height/3, width/3, height/3);

dg(x+(width/3)*2, y+(height/3)*2, width/3, height/3);

}

//九宫格的实现

else {

g.drawOval(x+width/3, y+height/3, width/3, height/3);

g3.drawOval(x+width/3, y+height/3, width/3, height/3);

dg(x, y, width/3, height/3);

dg(x+width/3, y, width/3, height/3);

dg(x+(width/3)*2, y, width/3, height/3);

dg(x, y+height/3, width/3, height/3);

dg(x, y+(height/3)*2, width/3, height/3);

dg(x+width/3, y+height/3, width/3, height/3);

dg(x+width/3, y+(height/3)*2, width/3, height/3);

dg(x+(width/3)*2, y+height/3, width/3, height/3);

dg(x+(width/3)*2, y+(height/3)*2, width/3, height/3);

}

}

//判断是颜色按钮还是画笔按钮,改变的全部是画笔按钮

public void actionPerformed(ActionEvent e) {

btnstr=e.getActionCommand(); //获取按钮的文字内容

//g.setColor(Color.black);

//如果为颜色按钮,将画笔改颜色

if(btnstr.equals("清除")){

//重新填充背景,同时将画笔置为背景颜色

System.out.println(background);

g.setColor(background);//保存图片画笔填充背景颜色

g.fillRect(0, 0, 1300, 800);

g3.setColor(background);//画笔重新填充背景

g3.fillRect(0, 0, 1300, 800);

g.setColor(graphcolor);

g3.setColor(graphcolor);

}

else{

if(btnstr.equals("")) {

//获取点击内容,将其内容强制转换成JButton

btn=(JButton) e.getSource();

//获取颜色按钮颜色

graphcolor=btn.getBackground();

}

//若为画笔粗细,获取粗细大小

else if(btnstr.equals("细")){

graphsize=1; //画笔大小为细,大小size为1

}

else if(btnstr.equals("中")){

graphsize=3;

}

else if(btnstr.equals("粗")){

graphsize=5;

}

else{

btncontent=btnstr; //获取画笔模式按钮的内容

}

}

}

//鼠标点击方法

@Override

public void mouseClicked(MouseEvent e) {

System.out.println("点击");

}

//鼠标按下方法

@Override

public void mousePressed(MouseEvent e) {

System.out.println("按下");

x1=e.getX();

y1 =e.getY();

}

//重写鼠标释放时的方法

@Override

public void mouseReleased(MouseEvent e) {

g.setColor(graphcolor);//获取保存画笔的颜色

g3.setColor(graphcolor); //获取画板画笔的颜色

x2=e.getX();

y2 =e.getY();

//选取画笔模式为直线时

if(btncontent.equals("直线")) {

g.setStroke(new BasicStroke(graphsize)); //保存画笔进行画图

g.drawLine(x1, y1, x2, y2);//画笔画直线

g3.setStroke(new BasicStroke(graphsize));//置画笔大小

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

}

//选取画笔模式为波形时

else if(btncontent.equals("波形")) {

//波形函数

g.setStroke(new BasicStroke(graphsize)); //置画笔大小

g3.setStroke(new BasicStroke(graphsize));

double x4 = 0,y4 = 0;

double a2=1.40,b2=1.56,c2=1.40,d2=-6.56;

//波形函数

for(int i=0;i<5000;i++) {

double x5=Math.sin(a2*x4)-Math.cos(b2*y4);

double y5=Math.sin(c2*x4)-Math.cos(d2*y4);

x4=x5;

y4=y5;

int px=(int)(x5*100+x1);

int py=(int)(y5*100+y1);

//画波形

g.drawLine(px, py, px, py);

g3.drawLine(px, py, px, py);

}

}

//选取画笔模式为矩形时

else if(btncontent.equals("矩形")) {

g.setStroke(new BasicStroke(graphsize)); //获取矩形画笔的大小

g.drawRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2-x1), Math.abs(y2-y1));//画矩形

g3.setStroke(new BasicStroke(graphsize));

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

}

//选取的画笔模式为填充矩形

else if(btncontent.equals("填充矩形")){

//画填充矩形

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

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

}

//长方体函数

else if(btncontent.equals("长方体")){

g.setStroke(new BasicStroke(graphsize));//获取长方体画笔大小

g.setColor(btn.getBackground());//将画笔颜色置选择画笔颜色按钮颜色

//长方体函数

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

g3.setStroke(new BasicStroke(graphsize));

g3.setColor(btn.getBackground());

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

int a,b,c,d;

a=Math.min(x1, x2);

b=Math.max(x1, x2);

c=Math.min(y1, y2);

d=Math.max(y1, y2);

int m=(int)((b-a)*Math.cos(Math.PI/4)*Math.sin(Math.PI/4));

int n=(int)((b-a)*Math.cos(Math.PI/4)*Math.sin(Math.PI/4));

//顶面

g.setColor(btn.getBackground());

g.fillPolygon(new int[] {a, a+m, b+m,b},new int[] {c,c-n,c-n,c},4);

//右侧面

g.setColor(btn.getBackground());

g.fillPolygon(new int[] {b, b, b+m,b+m},new int[] {c,d,d-n,c-n},4);

g3.setColor(btn.getBackground());

g3.fillPolygon(new int[] {a, a+m, b+m,b},new int[] {c,c-n,c-n,c},4);

//右侧面

g3.setColor(btn.getBackground());

g3.fillPolygon(new int[] {b, b, b+m,b+m},new int[] {c,d,d-n,c-n},4);

}

//分形函数

else if(btncontent.equals("分形")){

g.setStroke(new BasicStroke(graphsize)); //获取画笔大小

g3.setStroke(new BasicStroke(graphsize));

double x = 0,y = 0;

//分形函数实现

double a1=-1.8,b=-2.0,c=-0.5,d=-0.9;

for(int i=0;i<5000;i++) {

double x3=Math.sin(a1*y)-c*Math.cos(a1*x);

double y3=Math.sin(b*x)-d*Math.cos(b*y);

x=x3;

y=y3;

int px=(int)(x3*100+x1);

int py=(int)(y3*100+y1);

g.drawLine(px, py, px, py);

g3.drawLine(px, py, px, py);

}

}

//画圆

else if(btncontent.equals("圆")) {

g.setStroke(new BasicStroke(graphsize));//获取画笔大小

g.drawOval(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2-x1), Math.abs(y2-y1));//画圆

g3.setStroke(new BasicStroke(graphsize));

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

}

//画填充圆

else if(btncontent.equals("填充圆")){

g.fillOval(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2-x1), Math.abs(y2-y1));//画填充圆

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

}

//当选取模式为文字

else if(btncontent.equals("文字")){

//获取画笔大小

g.setStroke(new BasicStroke(15));

Font font = new Font(mode, Font.BOLD, Integer.parseInt(size)); //获得文字内容,文字大小,文字样式

g.setFont(font); //在画笔中置文字样式和大小

g.drawString(content, x1, y1); //写上文字内容

g3.setStroke(new BasicStroke(15));

g3.setFont(font);//放入文字样式和大小

g3.drawString(content, x1, y1);

}

//当画笔模式为弧线时

else if(btncontent.equals("弧线")){

g.setStroke(new BasicStroke(graphsize));//获取画笔大小

//弧线函数

g.drawArc(x1, y1, 100, 60, 0, 180);

g3.setStroke(new BasicStroke(graphsize));

g3.drawArc(x1, y1, 100, 60, 0, 180);

}

//九宫格递归,调用九宫格函数

else if(btncontent.equals("九宫格递归")) {

//九宫格递归实现

dg(0,50,600,600);

}

System.out.println("释放");

}

@Override

//鼠标进入方法

public void mouseEntered(MouseEvent e) {

System.out.println("进入");

}

@Override

//鼠标离开界面方法

public void mouseExited(MouseEvent e) {

System.out.println("离开");

}

@Override

public void mouseMoved(MouseEvent e) {

}

//重写鼠标移动函数

@Override

public void mouseDragged(MouseEvent e) {

g.setColor(graphcolor); //获取画笔颜色

g3.setColor(graphcolor);

// TODO Auto-generated method stub

x2=e.getX();

y2 =e.getY();

//当为画笔时

if(btncontent.equals("画笔")){

g.setStroke(new BasicStroke(graphsize)); //获取当前画笔大小

//画笔实现

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

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

g3.setStroke(new BasicStroke(graphsize));

g3.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

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

x1 = x2;

y1 = y2;

}

//橡皮擦

if(btncontent.equals("橡皮")){

//将画笔颜色置为背景颜色

g.setColor(background);

g3.setColor(background);

g.setStroke(new BasicStroke(30)); //将橡皮擦的大小置大小为30

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

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

g3.setStroke(new BasicStroke(30));

g3.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

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

x1 = x2;

y1 = y2;

//使用过后,将画笔颜色重新置为原来颜色

g.setColor(graphcolor);

g3.setColor(graphcolor);

}

//喷枪函数

else if(btncontent.equals("喷枪")){

g.setStroke(new BasicStroke(graphsize)); //不用加粗,获取画笔大小

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

g3.setStroke(new BasicStroke(graphsize)); //不用加粗

g3.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

//喷枪实现函数

for(int k=0;k<20;k++){

Random i=new Random();

int a=i.nextInt(10);

int b=i.nextInt(20);

g.drawLine(x2+a, y2+b, x2+a, y2+b);

g3.drawLine(x2+a, y2+b, x2+a, y2+b);

}

}

}

}

画板演示:

保存图片:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring Bean属性注入的两种方式详解
下一篇:详解Spring Bean的配置方式与实例化
相关文章

 发表评论

暂时没有评论,来抢沙发吧~