2010-08-26 5 views
0

Je veux obtenir l'effet de java dans le pinceau, la souris revient au point, déplace la souris plus vite, les traits plus fins.un effet de pinceau en Java

+1

Voulez-vous dire que vous voulez obtenir l'effet d'un pinceau dans un outil de dessin à main levée par écrit en Java, telle que l'épaisseur de la ligne dépend de la vitesse de la souris se déplace? (Au fait, ce n'est pas comment les vrais pinceaux se comportent.) –

+0

Merci, Parce que j'écris une procédure Java, j'espère passer la déambulation de la souris pour exprimer cet effet.Je ne suis pas vraiment non plus de comprendre comment de vrais pinceaux se comportent.Maybe , vous pouvez me dire.Merci encore! –

Répondre

2

Voici un programme qui montre ce que vous essayez d'accomplir.

Ce programme n'est pas parfait, mais devrait vous aider à démarrer avec ce que vous essayez de construire.

import java.awt.Canvas; 
import java.awt.Graphics; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseMotionListener; 

import javax.swing.JFrame; 

public class PaintBrush { 

    JFrame f; 
    Canvas c; 
    int x=-1, y=-1; 

    public PaintBrush() { 
     f = new JFrame(); 
     f.setSize(600, 400); 
     c = new Canvas() { 
      public void paint(Graphics g) { 
       // super.paint(g); 
      } 
     }; 
     f.getContentPane().add(c); 
     c.addMouseMotionListener(new MouseMotionListener() { 

      @Override 
      public void mouseMoved(MouseEvent e) { 
       // TODO Auto-generated method stub 
      } 

      @Override 
      public void mouseDragged(MouseEvent e) { 
       if(x==-1){ 
        x = e.getX(); 
        y = e.getY(); 
       } 
       int diffx = Math.abs(x - e.getX()); 
       int diffy = Math.abs(y - e.getY()); 
       System.out.println("diffx:"+diffx+"\t"+"diffy:"+diffy); 
       int speed = (int) Math.sqrt((diffx + diffy)); 
       if(speed>1){ 
        c.getGraphics().fillOval(x, y, 20-speed*2, 20-speed*2); 
       }else { 
        c.getGraphics().fillOval(x, y, 20, 20); 
       } 
       System.out.print("Speed:"+speed + "\t"); 
       System.out.println("x:"+e.getX()); 
       x = e.getX(); 
       y = e.getY(); 
      } 
     }); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.setVisible(true); 
    } 

    public static void main(String[] args) { 
     new PaintBrush(); 

    } 
Questions connexes