【发布时间】:2016-10-19 05:44:26
【问题描述】:
我正在用 Javafx 制作一个基本的绘图应用程序。我想知道是否有某种方法可以提高画布上线条的绘制速度。
public class MouseListener implements EventHandler<MouseEvent>{
@Override
public void handle(MouseEvent event) {
if(event.getSource() == canvas){
canvas.getParent().setCursor(Cursor.CROSSHAIR);
}
if(event.getEventType() == MouseEvent.MOUSE_PRESSED){
x1 = event.getX();
y1 = event.getY();
}else if(event.getEventType() == MouseEvent.MOUSE_MOVED){
pGraphics.reset();
x2 = event.getX();
y2 = event.getY();
mouseClick = 0;
pGraphics.drawLine(x1, y1, x2, y2);
}
}
public void drawLine(double x1, double y1, double x2, double y2){
gc.strokeLine(x1, y1, x2, y2);
}
public void reset()
{
gc.clearRect(0,0, gc.getCanvas().getWidth(), gc.getCanvas().getHeight());
}
如您所见,绘图非常简单,使用 MouseListener 检测行开始的 (x1, y1) 位置,设置行应该结束的 (x2, y2) 位置也是如此.如您所见,我在绘制后清除了线条,这是我的意图,因为这是应该“显示”线条应该去哪里的功能,例如在 Microsoft Paint 中使用线条功能。但是,所有这一切的问题在于,该行“滞后”在光标之后,并且在光标以正确的速度移动时非常重要。那么问题来了:这和我的draw函数、canvas绘图函数、mouseListener的刷新率或者其他的东西完全有关系,还是一起? 非常感谢对此的一些建议。
【问题讨论】:
标签: java canvas javafx graphics drawing