Canvas JavaFX 8 strokeText意外行为

Canvas JavaFX 8 strokeText意外行为,canvas,text,javafx,rendering,Canvas,Text,Javafx,Rendering,strokeText使用setLineWidth作为笔划的宽度。但是,如果我将线宽设置为0.0(预计笔划为0.0,即完全没有笔划),它实际上会使用先前设置的线宽来笔划文本。因此,尽管有显式的gc.setLineWidth(0.0);,笔划值将被忽略,并使用以前设置的值。以下是一个例子: Canvas fieldCanvas = new Canvas(400, 400); gc = fieldCanvas.getGraphicsContext2D(); gc.se

strokeText使用setLineWidth作为笔划的宽度。但是,如果我将线宽设置为0.0(预计笔划为0.0,即完全没有笔划),它实际上会使用先前设置的线宽来笔划文本。因此,尽管有显式的gc.setLineWidth(0.0);,笔划值将被忽略,并使用以前设置的值。以下是一个例子:

    Canvas fieldCanvas = new Canvas(400, 400);
    gc = fieldCanvas.getGraphicsContext2D();    

    gc.setFill(Color.YELLOW); 
    gc.setStroke(Color.RED);
    gc.setLineWidth(10.0);   

    gc.fillRect(50, 50, 350, 150);
    gc.strokeRect(50, 50, 350, 150);

    gc.setFont(Font.font("Arial", 100));                
    gc.setFill(Color.GREEN);
    gc.setStroke(Color.BLACK);        
    gc.setLineWidth(0.0);                               

    gc.fillText("TEST", 100, 160);
    gc.strokeText("TEST", 100, 160);
这将以10.0的值对文本进行笔划

JAVA FX8文档声明:超出范围(0,+inf)的无限或非正值将被忽略,当前值将保持不变

但这似乎也包括0本身。因此,任何值都必须大于0,而不是==0


文档应该更清晰,还是我在这里遗漏了什么?

文档可以更清晰,这意味着独占范围。以下是当前的实现:

 * Sets the current line width.
 * 
 * @param lw value in the range {0-positive infinity}, with any other value 
 * being ignored and leaving the value unchanged.
 */
public void setLineWidth(double lw) {
    // Per W3C spec: On setting, zero, negative, infinite, and NaN
    // values must be ignored, leaving the value unchanged
    if (lw > 0 && lw < Double.POSITIVE_INFINITY) {

这会给你一个大长方形

文档可能更清晰,这意味着专属范围。以下是当前的实现:

 * Sets the current line width.
 * 
 * @param lw value in the range {0-positive infinity}, with any other value 
 * being ignored and leaving the value unchanged.
 */
public void setLineWidth(double lw) {
    // Per W3C spec: On setting, zero, negative, infinite, and NaN
    // values must be ignored, leaving the value unchanged
    if (lw > 0 && lw < Double.POSITIVE_INFINITY) {
这会给你一个大长方形