将不同的颜色设置为svg路径

时间:2017-01-28 06:32:44

标签: java canvas javafx

我一直试图为两条SVG路径设置不同的颜色。但是,似乎其中一个SVG路径获得与第二个相同的属性。这是代码:

public class MainApp extends Application {

  @Override
  public void start(Stage primaryStage) throws Exception {
    primaryStage.setTitle("Drawing Operations Test");
    Group root = new Group();
    Canvas canvas = new Canvas(400, 400);
    GraphicsContext gc = canvas.getGraphicsContext2D();

    gc.setFill(Color.YELLOW);
    gc.setStroke(Color.YELLOW);
    gc.appendSVGPath("M 50 50 L 150 50 L 100 150 z");
    //gc.fill();   //If I uncomment these two lines, the second
    //gc.stroke(); //path won't appear

    gc.setFill(Color.RED);
    gc.setStroke(Color.BLUE);
    gc.appendSVGPath("M 200 50 L 300 50 L 250 150 z");
    gc.fill();
    gc.stroke();

    root.getChildren().add(canvas);
    primaryStage.setScene(new Scene(root));
    primaryStage.show();
  }
  public static void main(String[] args) {
    launch(args);
  }
}

我期待第一条路径为黄色而第二条路径为红色,但我有这个结果 enter image description here

我做错了什么? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

看看 Traceback (most recent call last): File "/usr/local/bin/pip", line 6, in <module> from pkg_resources import load_entry_point File "/Users/tamarafrankel/Library/Python/2.7/lib/python/site- packages/pkg_resources/__init__.py", line 70, in <module> import packaging.version ImportError: No module named packaging.version 做了什么:

  

将SVG路径字符串附加到当前路径。如果没有电流   然后,字符串必须以任一类型的移动命令开始。

虽然它们看起来是分开的,但实际上你对两种形状使用相同的路径。您希望每次开始绘制新路径时都使用GraphicsContext#appendSVGPath(String svgpath)