有人可以帮助我吗?我需要在javaFX中画一个圆圈。应该部分填充(底部)。顶部应该是透明的。填充部分的级别我应该能够在运行时更改。此外,它可能是圆形填充两种颜色
由于
答案 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);
}
}
这只是一种简单的方法,你可以找到更好,更强大的例子,我想,祝你好运!