⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paintdraw.java

📁 用java写的一个画图板
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    	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 + -