Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中循环梯度和非循环梯度的区别_Java_User Interface_Colors_Gradient - Fatal编程技术网

java中循环梯度和非循环梯度的区别

java中循环梯度和非循环梯度的区别,java,user-interface,colors,gradient,Java,User Interface,Colors,Gradient,我目前正在学习JavaGUI开发,在这里我一直在学习Gradient。 我想知道循环梯度和非循环梯度的区别? 循环梯度 可以简单地将其作为图案在渐变区域重复 非循环梯度 图案不会重复自身,但会随着渐变区域的变化而变宽 import java.awt.Color; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Line2D;

我目前正在学习JavaGUI开发,在这里我一直在学习Gradient。 我想知道循环梯度和非循环梯度的区别?

  • 循环梯度
可以简单地将其作为图案在渐变区域重复

  • 非循环梯度
图案不会重复自身,但会随着渐变区域的变化而变宽

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JComponent;
import javax.swing.JFrame;
class GradientPane extends JComponent {
  public void paint(Graphics g) {
    Graphics2D g2D = (Graphics2D) g;
    Point2D.Float p1 = new Point2D.Float(150.f, 75.f); // Gradient line start
    Point2D.Float p2 = new Point2D.Float(250.f, 75.f); // Gradient line end
    float width = 300;
    float height = 50;
    GradientPaint g1 = new GradientPaint(p1, Color.WHITE, p2, Color.DARK_GRAY, true); // Cyclic
                                                                                      // gradient
    Rectangle2D.Float rect1 = new Rectangle2D.Float(p1.x - 100, p1.y - 25, width, height);
    g2D.setPaint(g1); // Gradient color fill
    g2D.fill(rect1); // Fill the rectangle
    g2D.setPaint(Color.BLACK); // Outline in black
    g2D.draw(rect1); // Fill the rectangle
    g2D.draw(new Line2D.Float(p1, p2));
  }
}
public class CyclicGradientPaint {
  public static void main(String[] a) {
    JFrame window = new JFrame("Cyclic Gradient Paint");
    window.setBounds(30, 30, 300, 300);
    window.getContentPane().add(new GradientPane());
    window.setVisible(true);
  }
}
    import java.awt.Color;
    import java.awt.GradientPaint;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.geom.Line2D;
    import java.awt.geom.Point2D;
    import java.awt.geom.Rectangle2D;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    class GradientPane extends JComponent {
      public void paint(Graphics g) {
        Graphics2D g2D = (Graphics2D) g;
        Point2D.Float p1 = new Point2D.Float(150.f, 75.f); // Gradient line start
        Point2D.Float p2 = new Point2D.Float(250.f, 75.f); // Gradient line end
        float width = 300;
        float height = 50;
        Rectangle2D.Float rect1 = new Rectangle2D.Float(p1.x - 100, p1.y - 25, width, height);
        GradientPaint g2 = new GradientPaint(p1, Color.WHITE, p2, Color.DARK_GRAY, false); // Acyclic gradient

        rect1.setRect(p1.x - 100, p1.y - 25, width, height);
        g2D.setPaint(g2); // Gradient color fill
        g2D.fill(rect1); // Fill the rectangle
        g2D.setPaint(Color.BLACK); // Outline in black
        g2D.draw(rect1); // Fill the rectangle
        g2D.draw(new Line2D.Float(p1, p2));
      }
    }    
    public class AcyclicGradientPaint {
      public static void main(String[] a) {
         JFrame window = new JFrame("Acyclic Gradient Paint");
         window.setBounds(30, 30, 300, 300);
         window.getContentPane().add(new GradientPane());
         window.setVisible(true);
      }
    }