java - 如何在给定形状中旋转 LinearGradient?

标签 java javafx javafx-2 javafx-8

我试图找到旋转嵌套到例如中的 LinearGradient 对象的方法。 Rectangle 对象,说:

Rectangle rect = new Rectangle(0, 0, 200, 200);

LinearGradient lg = new LinearGradient(0, 0, 100, 0, false, CycleMethod.REPEAT, new Stop[] {
    new Stop(0, Color.BLACK);
    new Stop(0.5, Color.WHITE);
    new Stop(1, Color.BLACK);
});

rect.setFill(lg);

enter image description here

现在,我尝试旋转此 lg 对象,例如向左旋转 45 度,但不旋转整个 rect。有什么办法可以实现吗?

最佳答案

LinearGradient 构造函数的第一个参数分别是渐变轴的起点和终点坐标。这意味着您只需传入适当旋转的轴即可实现“旋转”渐变。

在最简单的形式中,对于您描述的示例,您可以使用以下模式:

double angleInRadians = Math.toRadians(45);
double length = 100; 

double endX = Math.cos(angleInRadians) * length;
double endY = Math.sin(angleInRadians) * length;

LinearGradient lg = new LinearGradient(0, 0, endX, endY, ...);

这将导致渐变旋转 45 度。

此处的固定值将影响渐变的最终外观,以及其他参数。引用您的示例,此渐变具有与之前相同的“波长”(即 100),并从左上角的相同颜色开始(即 Color.BLACK 将位于坐标 (0,0))。

关于java - 如何在给定形状中旋转 LinearGradient?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25934678/

相关文章:

java - 我怎样才能对齐和改进这个乘法表?

java - Java中如何声明ObservableArrayList数组

java - 从 JavaFX 程序为 WebView 执行 Javascript 函数

java - 我正在创建的视频编辑程序上的播放按钮不起作用

java - instanceof 运算符的使用

java - 平移动画 - 结束位置

java - 添加 FXML 中定义的元素以循环列出

Javafx 在 TableView 中添加图像

java - 如何本地化 JavaFX FileChooser 对话框?

java - Google Cloud Bigtable Java 客户端 - tcnative 错误