如何改变 GradientPaint 的方向?

How to change the direction of a GradientPaint?

我正在尝试绘制一个从红色到蓝色的渐变矩形。我有以下代码:

g2d.setPaint(new GradientPaint(0, 0, Color.RED, 1000, 1000, Color.BLUE));
g2d.fillRect(0, 0, 1000, 1000); 

这是有效的。然而,渐变的方向是对角线的,从矩形的左上角点到右下角点(另一种看待这个的方式是渐变沿着y=-x + windowHeight

的线

我希望我的渐变从上到下。所以矩形的整个顶部是红色的,整个底部是蓝色的。换句话说,颜色应该只随着 y 坐标改变,给定任何 y=point 线,颜色应该在该线上是均匀的。

我还包含了以下图片,以大致了解我正在尝试做的事情:

我怎样才能做到这一点?

这一切都与你的渐变矢量有关。这里:(0, 0, Color.RED, 1000, 1000, Color.BLUE) 你的向量是一个对角线向量,它起始于 [0, 0],然后结束或指向 [1000, 1000] 或 45 度角。

将其改为直接向下:[0, 0] 到 [0, 1000] 应该效果很好。例如,

new GradientPaint(0, 0, Color.RED, 0, 1000, Color.BLUE)