2017-02-10 9 views
0

Не мог бы кто-нибудь мне помочь? Мне нужно нарисовать круг в javaFX. Он должен быть частично заполнен (нижняя часть). Верхняя часть должна быть прозрачной. Уровень заполненной части, которую я должен изменить во время выполнения. Кроме того, это может быть круг заполнен двумя цветамиКруг JavaFx с двумя цветами

Благодарности

ответ

0

Вы могли бы просто использовать прямоугольник и круг, как его подрезки формы. Перемещая прямоугольник вверх и вниз, сохраняя при этом отсечение, вы можете имитировать уровень заполнения.

+0

Хорошая идея. Но как я могу поместить прямоугольник в круг? – user3161584

0

Вы можете использовать линейный градиент сделать это внутри метода, где вы должны каждый раз указывать цвет:

private void changeColor(String color){ 

    if(color == null){ 
     color = "transparent"; 
    } 

    circle.setStyle("-fx-fill:linear-gradient(from 100.0% 100.0% to 100.0% 0.0%, rgb(77,102,204) 0.5," + color +" 0.5);"); 

} 

Вот демо:

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.Pane; 
import javafx.scene.shape.Circle; 
import javafx.stage.Stage; 

public class Launcher extends Application{ 

private Pane root = new Pane(); 
private Scene scene; 
private Circle circle = new Circle(200, 200, 100); 
private Button btn = new Button("Change"); 

private boolean change = false; 

@Override 
public void start(Stage stage) throws Exception { 




    btn.setOnAction(evt->{ 

     if(change){ 
     change = !change; 
     changeColor("red"); 
     }else{ 
     change = !change; 
     changeColor("transparent"); 
     } 

    }); 

    changeColor("green"); 

    root.getChildren().addAll(btn,circle); 
    scene = new Scene(root,400,400); 
    stage.setScene(scene); 
    stage.show(); 

} 


private void changeColor(String color){ 

    if(color == null || color.isEmpty()){ 
     color = "transparent"; 
    } 

    circle.setStyle("-fx-fill:linear-gradient(from 100.0% 100.0% to 100.0% 0.0%, rgb(77,102,204) 0.5," + color +" 0.5);"); 

} 


public static void main(String[] args) { 

    launch(args); 

} 

} 

Это просто простой метод вы можете найти лучший и более мощный пример, я думаю, удачи!

Смежные вопросы