2016-01-22 15 views
1

我正在尋找一種方法來繪製不同顏色的多段線(或路徑,如果它更容易)(第一行藍色連接到紅色等,但在一條多段線中) 。或者,有沒有辦法將折線上的每個頂點看作形狀,將其設置爲不同的顏色,從而使它們之間的顏色平滑過渡?在javafx中使用不同顏色對多段線的每一段進行着色

編輯:一個容器中的多行對我來說不夠好,除非存在一種方式將它們與strokeLineJoin之類的方法進行可視化連接。我只是不明白爲什麼不可能將每條折線/路徑作爲一個形狀來對待,並將其設置爲不同的顏色,這似乎是很自然的事情。

回答

0

這是你想要的先生 - 這是它的外觀

enter image description here

package application; 

import java.util.Random; 

import javafx.application.Application; 
import javafx.geometry.Pos; 
import javafx.scene.Node; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.VBox; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.HLineTo; 
import javafx.scene.shape.MoveTo; 
import javafx.scene.shape.Path; 
import javafx.stage.Stage; 

public class Main extends Application { 
    @Override 
    public void start(Stage primaryStage) { 
     try { 
     VBox root = new VBox(10); 
     root.setAlignment(Pos.CENTER); 
     root.getChildren().addAll(getLine(10,30),getLine(10,30),getLine(10,30), 
       getLine(10,30),getLine(10,30),getLine(10,30), 
       getLine(10,30),getLine(10,30),getLine(10,30),getLine(10,30), 
       getLine(10,30),getLine(10,30),getLine(10,30)); 
     Scene scene = new Scene(root, 400, 400); 
     scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

private Node getLine(int ponts,int pontLength){ 
    HBox root = new HBox(-1); 
    root.setAlignment(Pos.CENTER); 
    Random r = new Random(); 
    while(ponts !=0){ 
     Path p1 = new Path(); 
     p1.getElements().addAll(new MoveTo(), new HLineTo(pontLength)); 
     p1.setStroke(Color.rgb(r.nextInt(255), r.nextInt(255), r.nextInt(255))); 
     root.getChildren().add(p1); 
     ponts--; 
    } 

    return root; 
} 

@Override 
public void stop() throws Exception { 
    // TODO Auto-generated method stub 
    super.stop(); 
} 

public static void main(String[] args) { 
    launch(args); 
} 
} 
+1

你能後的代碼,而不是代碼的截圖?首先,您不能從屏幕截圖中複製和粘貼,而對於另一個屏幕截圖則不完整。 –

+0

我以爲我把這段代碼連接起來,這就是爲什麼我沒有發佈它,現在我要感謝通知先生。@ James_D – Elltz

+0

這只是一個容器中的多行,它對我來說不夠好。我希望這些線可以通過像折線中的線段一樣的方法進行連接,並且可以對它們使用strokeLineJoin。我只是不明白爲什麼我不可能將每一行都視爲單一形狀,並將其設置爲多段線中的不同顏色,這似乎很自然。 – ezechiel

相關問題