JavaFx圈有两种颜色

时间:2017-02-10 08:22:27

标签: javafx colors geometry

有人可以帮助我吗?我需要在javaFX中画一个圆圈。应该部分填充(底部)。顶部应该是透明的。填充部分的级别我应该能够在运行时更改。此外,它可能是圆形填充两种颜色

由于

2 个答案:

答案 0 :(得分:0)

您可以使用矩形和圆形作为剪裁形状。通过在保持剪裁到位的同时上下移动矩形,您可以模拟填充水平。

答案 1 :(得分: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); 

}

}

这只是一种简单的方法,你可以找到更好,更强大的例子,我想,祝你好运!