JPanel如何制作垂直渐变?
How to make JPanel vertical gradient?
如何制作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);
}
});
从 docs 开始,您使用的构造函数要求您提供 2 个点和 2 种颜色:
public GradientPaint(Point2D pt1,
Color color1,
Point2D pt2,
Color color2)
每个点都有自己的 X
和 Y
坐标,所以它看起来是水平的,因为你在代码中说要绘制从点 (0, 0)
到点的渐变(1612, 35)
但实际上有点斜
在这种情况下,如果您希望它完全垂直,请将 P2 上的 1612 更改为 0 或将 P1 上的 0 更改为 1612
它将根据该配置填充形状,我想你很困惑,认为它应该用渐变从 (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
和 Y
坐标变化
对于水平笔划仅X
变化
仅针对 垂直 笔划 Y
更改
所以,这就是你需要做的:)
如何制作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);
}
});
从 docs 开始,您使用的构造函数要求您提供 2 个点和 2 种颜色:
public GradientPaint(Point2D pt1,
Color color1,
Point2D pt2,
Color color2)
每个点都有自己的 X
和 Y
坐标,所以它看起来是水平的,因为你在代码中说要绘制从点 (0, 0)
到点的渐变(1612, 35)
但实际上有点斜
在这种情况下,如果您希望它完全垂直,请将 P2 上的 1612 更改为 0 或将 P1 上的 0 更改为 1612
它将根据该配置填充形状,我想你很困惑,认为它应该用渐变从 (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
和Y
坐标变化对于水平笔划仅
X
变化仅针对 垂直 笔划
Y
更改
所以,这就是你需要做的:)