JavaFX半圆形的圆形径向渐变半径

时间:2020-01-13 07:36:34

标签: javafx gradient shapes circular-dependency intersect

我需要在一个减去的圆上添加一个圆形的径向渐变。我一直在尝试,但无法获得圆形渐变。

Circular radial gradient trial

1:整个圈子 2:整个圆的径向渐变 3:减圆 4:减圆中的圆形径向渐变试验(不是我想要的) 5:减圆中的圆形径向渐变。 这就是我想要的。

得到减法圆(3)之后,我应用了径向渐变,但是得到了(4)而不是(5)。

int x = 0.5;
int y = 0.5;

RadialGradient gradientCut = new RadialGradient(0, 0, x, y, 1, true, CycleMethod.NO_CYCLE, new 
Stop[] {
            new Stop(0, Color.ORANGE),
            new Stop(0.2, Color.YELLOW),
            new Stop(0.5, Color.TRANSPARENT)
});

Rectangle rect = new Rectangle(0, 0, 1000, 75);

Shape cutCircleGradient = Shape.intersect(circleGradientCut, rect);
cutCircleGradient.setFill(gradientCut);

我也尝试更改x和y的值,但没有得到想要的值。

1 个答案:

答案 0 :(得分:5)

使用剪辑切圆:

double x = 0.5;
double y = 0.5;

RadialGradient gradientCut = new RadialGradient(0, 0, x, y, 1, true, CycleMethod.NO_CYCLE, new
        Stop[]{
        new Stop(0, Color.ORANGE),
        new Stop(0.2, Color.YELLOW),
        new Stop(0.5, Color.TRANSPARENT)
});
double radius = 50.0;
Circle c = new Circle(radius, gradientCut);
var clip = new Rectangle(radius * 2, radius);
clip.setTranslateX(-radius);
clip.setTranslateY(-65);
//clip.setTranslateY(-50);  --> half circle
c.setClip(clip);