如何制作JPanel垂直渐变。我使用下面的代码,但它是水平渐变。
myPanel.setUI(new PanelUI() {
public void paint(Graphics g, JComponent c) {
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(new GradientPaint(new Point(0, 0), Color.white,new Point(1612, 35), Color.black, false));
g2.fillRect(0, 0, 1000, 35);
}
});
答案 0 :(得分:3)
从docs开始,您使用的构造函数会询问您2点和2种颜色:
public GradientPaint(Point2D pt1,
Color color1,
Point2D pt2,
Color color2)
每个点都有自己的X
和Y
坐标,因此它似乎是水平的,因为您在代码中说要绘制从点(0, 0)
到点{{的点的渐变1}}但实际上它有点对角线
在这种情况下,如果您希望它完全垂直,请将P2上的1612更改为0或将P1上的0更改为1612
它将基于该配置填充形状,我认为你很困惑,认为它应该使用渐变从(1612, 35)
绘制到(0, 0)
,但这些坐标仅用于渐变的配置不是它的实际绘画
想象一下这些坐标作为笛卡尔地图,如果你从(1612, 35)
画一条线到(0, 0)
会发生什么?这是一个对角线笔画,现在如果你从(10, 10)
到(0, 0)
或从(10, 0)
到(10, 10)
画出会发生什么?这是一个水平笔划,如果你从(20, 10)
到(0, 0)
或从(0, 10)
到(10, 10)
画一条线会发生什么?这是一个垂直笔画。看看每个例子的协调变化是什么?
对于对角线笔画,(10, 20)
和X
coords都会改变
对于水平笔画,只需Y
更改
仅针对垂直笔划X
更改
所以,这就是你需要做的事情:)