2015-01-24 3 views
2

Я пишу простую программу рисования. Проблема в том, что когда вы увеличиваете setStroke(new BasicStroke(size)); до большого количества, линия становится все испорченной. Я пишу в буферное изображение с графикой 2D.Java - Создание программы для программы рисования

Line all messed up

Любые идеи о том, как сделать чище линии взгляда?

Код:

addMouseMotionListener(new MouseMotionAdapter(){ 
     public void mouseDragged(MouseEvent e){ 
      dot=false; 


      if(graphics2D != null && paint.erase==false) 
      { 
       currentX = e.getX(); 
       currentY = e.getY(); 
       graphics2D.setStroke(new BasicStroke(size)); 
      graphics2D.drawLine(oldX, oldY, currentX, currentY); 

      repaint(); 

    } 
    } 
} 

Это опирается на буферном изображение.

+1

Было бы неплохо увидеть код с этим, просто чтобы мы знали, что мы должны «улучшать» – John

+0

@John Обновлен вопрос с кодом. Graphics2D = bufferedImage.createGraphics(); –

ответ

2

Это похоже на поведение линии по умолчанию, которая равна CAP_SQUARE. Попробуйте использовать BasicStroke(float width, int cap, int join) конструктор:

new BasicStroke(
    size, 
    BasicStroke.CAP_ROUND, 
    BasicStroke.JOIN_ROUND 
); 

вы получите еще лучшее поведение в использовании java.awt.geom.Path2D на протяжении всей мыши вниз...мыши вверх последовательности. Затем каждая строка в последовательности соединяется.

+0

Добро пожаловать. – Radiodef

Смежные вопросы