JavaFX круговой радиальный градиент излучающий в полукруге - PullRequest
2 голосов
/ 13 января 2020

Мне нужно добавить круговой радиальный градиент к вычтенному кругу. Я пытался, но я не могу получить круговой градиент.

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 Ответ

5 голосов
/ 13 января 2020

Используйте клип, чтобы нарезать свой круг:

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