У меня есть следующий документ SVG:Stop непрозрачности в JavaFX LinearGradient
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg id="svg602"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="324.02335" height="689.724"
space="preserve" version="1.0">
<defs id="defs604">
<linearGradient id="linearGradient3034">
<stop id="stop3035" offset="0"
style="stop-color:#0000ff;stop-opacity:1" />
<stop id="stop3036" offset="1"
style="stop-color:#ffffff;stop-opacity:0;" />
</linearGradient>
<linearGradient id="linearGradient3542"
xlink:href="#linearGradient3034"
x1="10" y1="10"
x2="210" y2="210"
gradientUnits="userSpaceOnUse" />
</defs>
<rect id="r1" x="10" y="10" width="200" height="200"
style="fill:url(#linearGradient3542);stroke:none" />
</svg>
Я пытаюсь добиться того же в JavaFX с помощью следующего кода:
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.paint.CycleMethod;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class GradientSample extends Application {
public static void main(String[] args) { launch(args); }
@Override
public void start(Stage primaryStage) {
Group mainGroup = new Group();
Rectangle r = new Rectangle(10, 10, 200, 200);
Stop[] stops = new Stop[] { new Stop(0, new Color(0.0, 0.0, 1.0, 1.0)),
new Stop(1, new Color(1.0, 1.0, 1.0, 0.0)) };
LinearGradient lg = new LinearGradient(10, 10, 210, 210, false, CycleMethod.NO_CYCLE,
stops);
r.setFill(lg);
mainGroup.getChildren().add(r);
Scene scene = new Scene(mainGroup, 600, 600);
primaryStage.setScene(scene);
primaryStage.show();
}
}
Однако SVG оказано (в Inkscape), как это:
в то время как Явь AFX сцена визуализируется как это:
Очевидно, что остановка непрозрачности (0,0) второй остановки не рассматривается JavaFX (если я устанавливаю непрозрачность до 1,0 в файле SVG, оно отображается как сцена JavaFX).
Я что-то пропустил или должен считать это ошибкой?
Есть ли другое решение, как достичь непрозрачности Stop, отличного от 1.0 в JavaFX?
Прохладный, отличный анализ! Будет продолжена в начале следующей недели ... –
https://bugs.openjdk.java.net/browse/JDK-8146778 –
Спасибо, что сообщили об этом –