Создать прямоугольник, залитый градиентом - Java

Узнай цену своей работы

Формулировка задачи:

Всем здравствуйте! есть такой код. можете подсказать как сделать его градиентным? и в координатах hsv(хотя бы и без них). Или же можно сделать не сколько фигур с разным цветом. пытался сделать так и так
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
 
/**
 *
 * @author MD 
 */
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Rectangle2D;
 
public class DrawSquare extends javax.swing.JFrame {
    public DrawSquare(String title) throws HeadlessException {
        super(title);
 
        DPanel DPanel = new DPanel();
         getContentPane().add(DPanel);
 
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    pack();}
    /**
     * Creates new form DrawSquare
     * @param args
     */
     public static void main(String[] args) {
    DrawSquare ds = new DrawSquare("MD");
    
    ds.setVisible(true);
  }
     class DPanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
     super.paintComponent(g);
      int index=0 ;
       Color[] colors = { Color.yellow, Color.cyan, Color.orange, Color.pink,
        Color.magenta, Color.lightGray };
      for (int i= 0; i < 7; i ++ ) {
       Graphics2D g2d = (Graphics2D) g ;

     // g2d.setColor(Color.blue);
      //g2d.setStroke(new BasicStroke(6));
      Rectangle2D rect = (new Rectangle2D.Double(10 , 10, 99, 99));
     Rectangle2D fill = (new Rectangle2D.Double(10 , 10, index, 99));
    // int index = (45) / 45 % colors.length;
    // g2d.setPaint(Color.length);
     g2d.fill(rect);
      
      }
    }
    
   public Dimension getPreferredSize() {
      return new Dimension(300,300);
    }
    }
}
 
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {
 
        panel2 = new java.awt.Panel();
 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 
        javax.swing.GroupLayout panel2Layout = new javax.swing.GroupLayout(panel2);
        panel2.setLayout(panel2Layout);
        panel2Layout.setHorizontalGroup(
            panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 309, Short.MAX_VALUE)
        );
        panel2Layout.setVerticalGroup(
            panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 195, Short.MAX_VALUE)
        );
 
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(56, 56, 56)
                .addComponent(panel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(86, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(53, 53, 53)
                .addComponent(panel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(118, Short.MAX_VALUE))
        );
 
        pack();
    }// </editor-fold>                        
 
    /**
     * @param args the command line arguments
     */
   
    // Variables declaration - do not modify                     
    private java.awt.Panel panel2;
    // End of variables declaration
мы можем закрасить часть фигуры одним цветом и часть другим?

Решение задачи: «Создать прямоугольник, залитый градиентом»

textual
Листинг программы
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
 
/**
 *
 * @author MD 
 */
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.util.TimerTask;
import java.util.Timer;
//import java.awt.event.ActionListener;
 
public class DrawSquare extends javax.swing.JFrame {
    public static float i=0;
    private long t = System.nanoTime();
    private static Timer mTimer;
    public static DPanel dPanel;
    public DrawSquare(String title) throws HeadlessException {
        super(title);
 
         dPanel = new DPanel();
         getContentPane().add(dPanel);
 
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    pack();}
    /**
     * Creates new form DrawSquare
     * @param args
     */
     public static void main(String[] args) {
    DrawSquare ds = new DrawSquare("MD4");
    mTimer = new Timer();
    MyTimerTask mMyTimerTask = new MyTimerTask(dPanel);
    mTimer.schedule(mMyTimerTask, 1000,1);
    ds.setVisible(true);
  }
         
   public Dimension getPreferredSize() {
      return new Dimension(300,300);
    }  
}
     class DPanel extends JPanel {
    
   protected void paintComponent(Graphics g) {
     super.paintComponent(g);
     Graphics2D g2d = (Graphics2D) g ;
      int index=0;
      
      for (float i=0; i < 1; i +=0.01) {
      
 
      g2d.setColor(new Color(Color.HSBtoRGB(DrawSquare.i, 1, 1)));
      Rectangle2D rect = (new Rectangle2D.Double(index , 9, 1, 99));
    g2d.fill(rect);
     index++; 
           }
          } 
}
class MyTimerTask extends TimerTask {
    private DPanel dPanel;
    public MyTimerTask(DPanel dPanel)
    {
        this.dPanel=dPanel;
    }
        @Override
        public void run() {
                    int index=0;
                     
      Graphics g=dPanel.getGraphics();
      Graphics2D g2d = (Graphics2D) g ;
      for (float i=0; i < 1; i +=0.01) {
      
 
      g2d.setColor(new Color(Color.HSBtoRGB(DrawSquare.i, 1, 1)));
      Rectangle2D rect = (new Rectangle2D.Double(index , 9, 1, 99));
    g2d.fill(rect);
     index++; 
        //   }*/
                    System.out.println(DrawSquare.i+=0.01);
                       // dPanel.repaint();
            //g2d.fill(rect)i+=0.01;
        }
    }}
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {
 
        panel2 = new java.awt.Panel();
 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 
        javax.swing.GroupLayout panel2Layout = new javax.swing.GroupLayout(panel2);
        panel2.setLayout(panel2Layout);
        panel2Layout.setHorizontalGroup(
            panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 252, Short.MAX_VALUE)
        );
        panel2Layout.setVerticalGroup(
            panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 195, Short.MAX_VALUE)
        );
 
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(56, 56, 56)
                .addComponent(panel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(143, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(53, 53, 53)
                .addComponent(panel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(118, Short.MAX_VALUE))
        );
 
        pack();
    }// </editor-fold>                        
 
    /**
     * @param args the command line arguments
     */
   
    // Variables declaration - do not modify                     
    private java.awt.Panel panel2;
    // End of variables declaration

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5