2017-02-10 5 views
0

나를 도와 줄 수 있습니까? javaFX에서 원을 그려야합니다. 부분적으로 채워야합니다 (하단 부분). 상단 부분은 투명해야합니다. 채워진 부분의 레벨은 런타임에 변경할 수 있어야합니다. 또한, 두 가지 색상두 가지 색상의 JavaFx 서클

감사

답변

0

당신은 단지 사각형 및 해당 클리핑 모양으로 원을 사용할 수 가득 원이 될 수 있습니다. 클리핑을 유지하면서 직사각형을 위아래로 움직이면 채우기 레벨을 시뮬레이션 할 수 있습니다.

+0

좋습니다. 하지만 사각형에 사각형을 어떻게 넣을 수 있습니까? – user3161584

0

할 때마다이 색 표시해야합니다 경우 당신은 방법 안에이 작업을 수행하기 위해 선형 그라데이션을 사용할 수

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); 

} 

} 

그냥 간단한 방법입니다 : 여기

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);"); 

} 

는 데모입니다 당신은 내가 생각하는 더 좋고 더 강력한 예를 찾을 수 있습니다, 행운을 빈다!