如何在大曲面上生成平滑的JavaFX LinearGradient?
为什么下面的代码会导致块状渐变?i、 渐变不是平滑的,你可以看到组成它的一些矩形 有办法解决这个问题吗?如何在大曲面上生成平滑的JavaFX LinearGradient?,javafx,linear-gradients,Javafx,Linear Gradients,为什么下面的代码会导致块状渐变?i、 渐变不是平滑的,你可以看到组成它的一些矩形 有办法解决这个问题吗? 顺便说一句,我在Vista上运行这个,但我也在Mac上体验过 var stage:Stage = Stage { title: "Louis' Photo Wall" width: 900 height: 600 scene: Scene { content : Rectangle { width: bind stage.scene.width h
顺便说一句,我在Vista上运行这个,但我也在Mac上体验过
var stage:Stage = Stage {
title: "Louis' Photo Wall"
width: 900
height: 600
scene: Scene {
content : Rectangle {
width: bind stage.scene.width
height: bind stage.scene.height
fill:LinearGradient {
startX : 0.0
startY : 0.0
endX : 0.0
endY : 1.0
stops: [
Stop {
color : Color {
red:0.0
blue:0.0
green:0.0
}
offset: 0.0
},
Stop {
color : Color {
red:0.8
blue:0.8
green:0.8
}
offset: 1.0
},
]
}
}//OuterRectangle
}
}块状的数量并不显著 移动到1.0的端点似乎会使块状结果对角化,从而产生更明显的变化 一个假设是有两件事正在发生。 1.r/g/b颜色实际上不是连续的,但有256个步骤。(8位)。255的0.8等于204。 2.当一种颜色从0到0.8映射到600像素时,每个像素都会得到一个无法完全平滑的增量。当我跑步时,场景大小实际上是792x566。因此,渐变将使用566/204=2.775像素作为一种颜色,然后再切换到下一种颜色。这会在进行转换时引起波动 这并不能解释为什么停止时使用0.0到1.0(而不是0.0到0.8)的结果(至少在我的跑步中)看起来是平稳的过渡
后续:LinearGradient可能会使用一种方法进行插值。一个代码示例和结果
for (v in [0.00..1.00 step 1.0/600]) {
println("{%7.5f v} {Color.WHITE.ofTheWay(Color.BLACK,v)}");
}
哪张照片
0.00000 javafx.scene.paint.Color[red=255,green=255,blue=255,opacity=1.0]
0.00167 javafx.scene.paint.Color[red=255,green=255,blue=255,opacity=1.0]
0.00333 javafx.scene.paint.Color[red=254,green=254,blue=254,opacity=1.0]
0.00500 javafx.scene.paint.Color[red=254,green=254,blue=254,opacity=1.0]
0.00667 javafx.scene.paint.Color[red=253,green=253,blue=253,opacity=1.0]
0.00833 javafx.scene.paint.Color[red=253,green=253,blue=253,opacity=1.0]
0.01000 javafx.scene.paint.Color[red=252,green=252,blue=252,opacity=1.0]
0.01167 javafx.scene.paint.Color[red=252,green=252,blue=252,opacity=1.0]
0.01333 javafx.scene.paint.Color[red=252,green=252,blue=252,opacity=1.0]
0.01500 javafx.scene.paint.Color[red=251,green=251,blue=251,opacity=1.0]
0.01667 javafx.scene.paint.Color[red=251,green=251,blue=251,opacity=1.0]
...
当我在WindowsXP系统上用Java1.6.0 t 11在NetBeans6.5下运行代码时,我看不出有什么问题。线性辐射产品是光滑的,而不是块状的。调整大小可保持整个窗口的渐变。我使用的显示器是三星214T(驱动速度为1600x1200)。更新后,我确实看到了它,但块状效果并不显著。请看提交的答案。当你说“块状”时,是有实心的块状物还是有一种波浪状的效果让人联想到块状物?是的,它看起来有点像在纸上打印时的渐变效果。你是对的,这是非常轻微的,但它足以注意到黑色和白色,至少。我发现更容易注意到是否有三站,黑色,白色,黑色,白色是0.9,0.9,0.9。我试着截图,但是截图的结果非常糟糕,因为某些原因。检查渐变上的实际颜色(从JavaFX的角度)显示每个特定颜色级别出现2到5次。因此,对于所使用的舞台高度,目前的波段为2像素到5像素高。