📄 paintdraw.java
字号:
}
public void mousePressed(java.awt.event.MouseEvent e)
{
flag=false;
sx=e.getX();sy=e.getY();
}
public void mouseReleased(java.awt.event.MouseEvent e)
{ int x0,y0; //新点坐标
Graphics2D g=(Graphics2D)JDrawPanel.getGraphics();
switch(f){
case 2:g.setXORMode(Color.white); //异或画直线模式
g.drawLine(sx, sy, x, y); //清除上一次移动时画的线
x=e.getX();y=e.getY(); //获得新位置
g.setColor(c); //设置后来有滑动条设定的颜色
g.setPaintMode(); //设置直接画图模式
g.drawLine(sx, sy, x,y);
break;
case 3: //椭圆和矩形
case 4: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));
}
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;
}
}
public void mouseEntered(java.awt.event.MouseEvent e){}
public void mouseExited(java.awt.event.MouseEvent e){}
public void mouseClicked(java.awt.event.MouseEvent e){}
public void mouseMoved(java.awt.event.MouseEvent e){}
public void mouseDragged(java.awt.event.MouseEvent e)
{ int x0,y0;
Graphics2D g=(Graphics2D)JDrawPanel.getGraphics();
switch(f){
case 1: x=e.getX();y=e.getY();//任意绘图
g.setColor(c);
g.setPaintMode();
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;
}//end switch
}
public void actionPerformed(java.awt.event.ActionEvent e)
{ /*f=Integer.parseInt(e.getActionCommand());*/
Object obj=e.getSource();
if(obj==调色板)
{
Color tempColor=JColorChooser.showDialog(this,"调色板",c);
c=tempColor;
tt.setBackground(c);
}
else if(obj==clear)
{
JDrawPanel.setBackground(Color.white);
}
else if(obj==截屏)
{
Robot robot=null;
try{
robot=new Robot();
}
catch(Exception er)
{}
Rectangle screenRect=null;
int width=getToolkit().getScreenSize().width;
int height=getToolkit().getScreenSize().height;
screenRect=new Rectangle(0,0,width,height);
setVisible(false);
this.setVisible(false);
image=robot.createScreenCapture(screenRect);
setVisible(true);
}
}
public void adjustmentValueChanged(java.awt.event.AdjustmentEvent e)
{ c=new Color(r1.getValue(),g1.getValue(),b1.getValue());
tt.setBackground(c);
}
public void itemStateChanged(java.awt.event.ItemEvent e)
{ if(e.getItemSelectable() instanceof JCheckBox)
{
JCheckBox temp=(JCheckBox)e.getItemSelectable();
fill=temp.isSelected();
}
else
{
JRadioButton temp=(JRadioButton)e.getItemSelectable();
if(temp==op1)f=1;
else if(temp==op2)f=2;
else if(temp==op3)f=3;
else if(temp==op4)f=4;
}
}
public static void main(String args[])
{ JFrame.setDefaultLookAndFeelDecorated(true);
Font font=new Font("JFrame",Font.PLAIN+Font.BOLD,14);
Enumeration keys=UIManager.getLookAndFeelDefaults().keys();
while(keys.hasMoreElements())
{
Object key=keys.nextElement();
if(UIManager.get(key) instanceof Font) UIManager.put(key,font);
}
PaintDraw mainFrame=new PaintDraw();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -