это будет долго, поэтому заранее спасибо для чтения и/или отвечать :)Рисование в Java 2D с быстрым mousemovement
Edit: Это How to draw a continuous curve of repeated ovals on speedy mouse cursor dragging? имеет ответ я не совсем хорошо с, не существует никакой другой способ сделать это, чем рисовать прямые линии между прямоугольниками или овалами? (для меня это не имеет значения, если прямоугольник или овал).
Я много искал и не нашел то, что искал, так что вот мы идем: Мне нужно создать приложение для рисования для университета, и я практически закончен, моя проблема, тем не менее, что событие mouseDragged похоже, недостаточно быстро распознает движение (?). Это означает, что если пользователь чертит руки кистью и слишком быстро перемещает мышь, программа не будет рисовать «сплошную линию прямоугольников». Вместо этого на чертеже будет много пробелов. Это как моя краска() переопределение и MouseMotionListener (для currentTool 1, который, как предполагается, приравнять кисть/перо) выглядит следующим образом:
public void paint(Graphics g){
g2d = (Graphics2D)g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setComposite(AlphaComposite.getInstance(
AlphaComposite.SRC_OVER, 1.0f));
Iterator<Color> sc = strokeColours.iterator();
Iterator<Color> fc = fillColours.iterator();
Iterator<Boolean> fill = fillq.iterator();
for (Shape s : shapes){
g2d.setStroke(new BasicStroke(4));
g2d.setPaint(sc.next());
g2d.draw(s);
g2d.setPaint(fc.next());
if (fill.next()){
g2d.fill(s);
}
}
if (temp!=null){
g2d.setComposite(AlphaComposite.getInstance(
AlphaComposite.SRC_OVER, 0.5f));
g2d.setPaint(strokeColour);
g2d.draw(temp);
if(isfilled){
g2d.setPaint(fillColour);
g2d.fill(temp);
}
}
}
motionlistener:
this.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
mx2=e.getX();
my2=e.getY();
if (currentTool==1){
Shape point= new Rectangle2D.Double(mx2-(0.5*penStroke),my2-(0.5*penStroke),0.5+penStroke,0.5+penStroke);
shapes.add(point);
addColours(strokeColour);
}
else if(...){...
}
repaint();
}
});
}
NB: addColours (цвет c) funtion определяется вручную, чтобы добавить strokeColour как в strokeColours, так и в fillColours, а также добавить «true» для fillq. penStroke определяется с помощью ползунка и используется только для этого «инструмента».
Вы можете сохранить информацию о «точках» и просто перебрать рисунок объектов между ними, теперь вам нужно будет выбрать уровень итерации – MadProgrammer