簡體   English   中英

如何使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)

每個點都有其自己的XY坐標,因此它似乎是水平的,因為您在代碼中說是要繪制從點(0, 0)到點(1612, 35) (0, 0)的漸變(1612, 35)但實際上它有點對角線

在這種情況下,如果要使其完全垂直,請將P2上的1612更改為0或將P1上的0更改為1612

它將根據該配置填充形狀,我想您感到困惑,認為它應該使用漸變繪制從(0, 0)(1612, 35) ,但這些坐標僅用於漸變的配置,而不是實際的畫它

想象那些坐標為笛卡爾地圖,如果從(0, 0)(10, 10) (0, 0)畫一條線會發生什么? 這是一條斜線,如果你畫現在發生了什么從(0, 0)(10, 0)(10, 10)(20, 10) 這是水平筆划,如果從(0, 0)(0, 10)或從(10, 10)(10, 20) (10, 10)畫一條線會發生什么? 這是垂直筆划。 看看每個示例的坐標發生了什么變化?

  • 對於對角筆划, XY坐標都會改變

  • 對於水平筆划,只有X改變

  • 對於垂直筆划,僅Y改變

所以,這就是您需要做的:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM