Javafx 使用增加笔划会增加整个笔划的大小,而减少笔划不会增加整个笔划的大小

Javafx 使用增加笔划会增加整个笔划的大小,而减少笔划不会增加整个笔划的大小,javafx,Javafx,我正在使用javafx用java制作一个非常基本的绘图应用程序 我使用以下代码在画布上绘制: canvas.setonMouseDrawed(e->{ 如果(e.getButton()==MouseButton.PRIMARY){//draw gc.设定行程(刷色); gc.setLineWidth(parent.getBrushSize()); gc.beginPath(); gc.lineTo(e.getX(),e.getY()); gc.stroke();//绘制笔划 } }); 当我向

我正在使用javafx用java制作一个非常基本的绘图应用程序

我使用以下代码在画布上绘制:

canvas.setonMouseDrawed(e->{
如果(e.getButton()==MouseButton.PRIMARY){//draw
gc.设定行程(刷色);
gc.setLineWidth(parent.getBrushSize());
gc.beginPath();
gc.lineTo(e.getX(),e.getY());
gc.stroke();//绘制笔划
}
});
当我向上或向下滚动时,我会更改变量
parent.getBrushSize()
。 问题是,当我在绘制时增加笔刷大小时,整个笔划将变大,而如果我在绘制时减小笔刷大小,则其行为将如预期的那样: 正如你在左边看到的,我用一把大画笔从顶部开始画画,画笔的尺寸变小了。在右边,我开始用小刷子在上面画画,把它画得更大,但这样做增加了整个笔划的大小


如何使增加笔划大小的行为与减小笔划时的行为相同?

结果是,当我增加笔刷大小时,它会重新绘制整个笔划。 为了解决这个问题,我添加了
gc.beginPath()
因此,如果笔划的大小增加,它将开始一个新的笔划,但这不再利用
gc.lineTo
的优点,因为现在它只绘制球体,所以我添加了一个布尔
私有布尔biggerStroke=falsegc.beginPath()周围添加if语句像这样:

canvas.setonMouseDrawed(e->{
如果(e.getButton()==MouseButton.PRIMARY){//draw
if(大行程){
gc.beginPath();
smallerStroke=假;
}               
gc.设定行程(刷色);
gc.setLineWidth(parent.getBrushSize());
gc.lineTo(e.getX(),e.getY());
gc.stroke();//绘制笔划
}
});

每次增加笔划大小时,我都将
biggerStroke
布尔值设置为true。这样,每次我增加画笔大小时,它只会开始一个新行。

您可以重新绘制完整的路径。在较宽的线条上画较窄的线条是不可见的。。。