📄 paintdraw.java
字号:
g1.addAdjustmentListener(this);
b1.addAdjustmentListener(this);
r1.setBackground(new Color(255,172,179));g1.setBackground(new Color(185,255,199));b1.setBackground(new Color(181,185,255));
JScrollPanel.add(r1);JScrollPanel.add(g1);JScrollPanel.add(b1);
frame.getContentPane().add(JScrollPanel,BorderLayout.EAST);
sizeChoice=new Choice();
sizeChoice.add("1");sizeChoice.add("3");sizeChoice.add("5");sizeChoice.add("7");sizeChoice.add("9");sizeChoice.add("11");sizeChoice.add("大");sizeChoice.add("特大");
sizeChoice.addItemListener(this);
eraseChoice=new Choice();
eraseChoice.add("5");eraseChoice.add("9");eraseChoice.add("13");eraseChoice.add("17");
eraseChoice.addItemListener(this);
JButton erase=new JButton("橡皮");
JButton color=new JButton("调色板");
JButton clear=new JButton("清除");
JButton printscreen=new JButton("截屏");
erase.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
f=7;
}
}
);
color.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Color tempColor=JColorChooser.showDialog(frame,"选取颜色",c);
if(tempColor!=null)
{
c=tempColor;
tt.setBackground(c);
}
}
}
);
clear.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent e)
{ JDrawPanel.setBackground(getBackground());
JDrawPanel.setBackground(Color.white);
}
}
);
printscreen.addActionListener(new ActionListener()
{ Graphics2D g=(Graphics2D)JDrawPanel.getGraphics();
public void actionPerformed(ActionEvent e)
{
Robot robot=null;
try{
robot=new Robot();
}
catch(Exception er){er.printStackTrace();}
Rectangle screenRect=null;
int width=getToolkit().getScreenSize().width;
int height=getToolkit().getScreenSize().height;
screenRect=new Rectangle(0,0,width,height);
frame.setVisible(false);
image=robot.createScreenCapture(screenRect);
frame.setVisible(true);//createScreenCapture(Rectangle screenRect) 创建包含从屏幕中读取的像素的图像。
/*repaint();*/
g.drawImage(image,0,0,null);
}
}
);
JLabel 大小B = new JLabel("画笔大小",JLabel.CENTER);
JLabel 大小E = new JLabel("橡皮大小",JLabel.CENTER);
JColorPanel.setLayout(new GridLayout(8,1));
JColorPanel.add(大小B);JColorPanel.add(sizeChoice);JColorPanel.add(大小E);JColorPanel.add(eraseChoice);
JColorPanel.add(erase);JColorPanel.add(color);JColorPanel.add(clear);JColorPanel.add(printscreen);
JColorPanel.setBackground(c1);
frame.getContentPane().add(JColorPanel,BorderLayout.WEST);
JDrawPanel.setLayout(null);
/*JDrawPanel.add(this);
setBackground(Color.white);*/
JDrawPanel.setBackground(Color.white);
/*this.setBounds(0,0,460,303);
addMouseListener(this);
addMouseMotionListener(this);*/
JDrawPanel.addMouseListener(this);
JDrawPanel.addMouseMotionListener(this);
frame.getContentPane().add(JDrawPanel,BorderLayout.CENTER);
frame.setSize(700,500);
frame.setVisible(true);
frame.validate();
}
public void paintComponent(Graphics g)
{
paintComponent(g);
if (image != null)
g.drawImage(image, 0, 0, null);
}
public void update(Graphics g)
{ g.drawImage(image,0,0,null);
paintComponent(g);
}
public void mousePressed(java.awt.event.MouseEvent e)
{
flag=false;
sx=e.getX();sy=e.getY();
count++;
Point p=e.getPoint();
}
public void mouseReleased(java.awt.event.MouseEvent e)
{ int x0,y0; //新点坐标
Graphics2D g=(Graphics2D)JDrawPanel.getGraphics();
g.setStroke(size);
switch(f){
case 2:g.setXORMode(Color.white); //异或画直线模式
g.drawLine(sx, sy, x, y); //清除上一次移动时画的线
x=e.getX();y=e.getY(); //获得新位置
g.setColor(c); //设置后来有滑动条设定的颜色
g.setXORMode(Color.white); //设置直接画图模式
g.drawLine(sx, sy, x,y);
break;
case 3: //椭圆和矩形
case 4:g.setXORMode(Color.white);
g.setColor(c);
x0=x>sx?sx:x;y0=y>sy?sy:y; //获得上次左上角坐标
if(!fill){ //没填充
if(f==3) g.drawOval(x0, y0, Math.abs(x-sx), Math.abs(y-sy));
else g.drawRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy));
}//end if
else{
if(f==3) g.fillOval(x0, y0, Math.abs(x-sx), Math.abs(y-sy));
else g.fillRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy));
}
g.setXORMode(Color.white);
x=e.getX();y=e.getY();
x0=x>sx?sx:x;y0=y>sy?sy:y;
g.setColor(c);
if(!fill){ //没填充
if(f==3) g.drawOval(x0, y0, Math.abs(x-sx), Math.abs(y-sy));
else g.drawRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy));
}//end if
else{
if(f==3) g.fillOval(x0, y0, Math.abs(x-sx), Math.abs(y-sy));
else g.fillRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy));
}
break;
case 11:{ /*x=e.getX();y=e.getY();
x0=x>sx?sx:x;y0=y>sy?sy:y;*/
rect=new Rectangle2D.Double(100,100,200,200);
g.setPaint(c);
g.draw(rect);
} break;
}
}
public void mouseEntered(java.awt.event.MouseEvent e){}
public void mouseExited(java.awt.event.MouseEvent e){}
public void mouseClicked(java.awt.event.MouseEvent e){count++;}
public void mouseMoved(java.awt.event.MouseEvent e){}
public void mouseDragged(java.awt.event.MouseEvent e)
{ int x0,y0;
Graphics2D g=(Graphics2D)JDrawPanel.getGraphics();
g.setStroke(size);
switch(f){
case 1:
x=e.getX();y=e.getY();//任意绘图
g.setColor(c);
g.setXORMode(Color.white);
g.drawLine(sx, sy, x,y);
sx=x;sy=y; //把新点复制给sx,sy
break;
case 2: if(!flag){
x=e.getX();y=e.getY();
g.setXORMode(Color.white);
g.drawLine(sx, sy, x,y);
flag=true;
}//end if
else{
g.setXORMode(Color.white);
g.drawLine(sx, sy, x,y);
x=e.getX();y=e.getY();
g.setXORMode(Color.white);
g.drawLine(sx, sy, x,y);
}
break;
case 3:
case 4:if(!flag){
x=e.getX();y=e.getY();
x0=x>sx?sx:x;y0=y>sy?sy:y; //获得坐上角坐标
g.setXORMode(Color.white);
if(!fill){ //没填充
if(f==3) g.drawOval(x0, y0, Math.abs(x-sx), Math.abs(y-sy));
else g.drawRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy));
}//end if
else{
if(f==3) g.fillOval(x0, y0, Math.abs(x-sx), Math.abs(y-sy));
else g.fillRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy));
}
flag=true;
}
else{
g.setXORMode(Color.white);
x0=x>sx?sx:x;y0=y>sy?sy:y;
if(!fill){ //没填充
if(f==3) g.drawOval(x0, y0, Math.abs(x-sx), Math.abs(y-sy));
else g.drawRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy));
}//end if
else{
if(f==3) g.fillOval(x0, y0, Math.abs(x-sx), Math.abs(y-sy));
else g.fillRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy));
}
x=e.getX();y=e.getY();
x0=x>sx?sx:x;y0=y>sy?sy:y;
g.setColor(c);
if(!fill){ //没填充
if(f==3) g.drawOval(x0, y0, Math.abs(x-sx), Math.abs(y-sy));
else g.drawRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy));
}//end if
else{
if(f==3) g.fillOval(x0, y0, Math.abs(x-sx), Math.abs(y-sy));
else g.fillRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy));
}
}//end else
break;
case 5:{
x=e.getX();y=e.getY();
x0=x>sx?sx:x;y0=y>sy?sy:y;
g.setColor(c);
int[] x1={x0,x,250};
int[] y1={y0,x,250};
g.drawPolygon(x1,y1,3);
break;
}
case 6:{if(count==5);
{ x=e.getX();y=e.getY();
x0=x>sx?sx:x;y0=y>sy?sy:y;
g.setColor(c);
int[] x1={x0,x,200,170,300};
int[] y1={y0,y,150,160,300};
g.drawPolygon(x1,y1,5);
} break;
}
case 7:
{
g.setColor(Color.white);
g.fillRect(e.getX()-2,e.getY()-2,econ,econ);
break;
}
case 8:
case 9:if(!flag){
x=e.getX();y=e.getY();
x0=x>sx?sx:x;y0=y>sy?sy:y; //获得坐上角坐标
g.setXORMode(Color.white);
if(!fill){ //没填充
if(f==8) g.drawArc(x0, y0, Math.abs(x-sx), Math.abs(y-sy),0,180);
else g.drawRoundRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy),100,100);
}//end if
else{
if(f==8) g.fillArc(x0, y0, Math.abs(x-sx), Math.abs(y-sy),0,180);
else g.fillRoundRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy),100,100);
}
flag=true;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -