2014-02-15 166 views

回答

2
GC.setLineWidth(2); 
GC.setStroke(LASSO_COLOR); 
GC.beginPath(); 
hdashed(x0, x1, y0); 
hdashed(x0, x1, y1); 
vdashed(x0, y0, y1); 
vdashed(x1, y0, y1); 
GC.closePath(); 
GC.stroke(); 

private void hdashed(double x0, double x1, double yy) 
{ 
    boolean on = true; 
    GC.moveTo(x0, yy); 
    for (double xx=x0; xx<=x1; xx+=DASH_LENGTH) { 
     if (on) GC.lineTo(xx, yy); 
     else GC.moveTo(xx, yy); 
     on = !on; 
    } 
} 

private void vdashed(double xx, double y0, double y1) 
{ 
    boolean on = true; 
    GC.moveTo(xx, y0); 
    for (double yy=y0; yy<=y1; yy+=DASH_LENGTH) { 
     if (on) GC.lineTo(xx, yy); 
     else GC.moveTo(xx, yy); 
     on = !on; 
    } 
} 
1

此功能已添加到JFX 8u40中。詳情請參閱API

1

沒有爲虛線,一切的方法setLineDashes如前:

... 
gc.setStroke(Color.RED); 
gc.setLineWidth(1); 
gc.setLineDashes(2); 
gc.strokeLine(x1, y1, x1, y1);