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

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

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

Всем здравствуйте! есть такой код. можете подсказать как сделать его градиентным? и в координатах hsv(хотя бы и без них). Или же можно сделать не сколько фигур с разным цветом. пытался сделать так и так
Листинг программы
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. /**
  7. *
  8. * @author MD
  9. */
  10. import javax.swing.*;
  11. import java.awt.*;
  12. import java.awt.geom.Rectangle2D;
  13. public class DrawSquare extends javax.swing.JFrame {
  14. public DrawSquare(String title) throws HeadlessException {
  15. super(title);
  16. DPanel DPanel = new DPanel();
  17. getContentPane().add(DPanel);
  18. setDefaultCloseOperation(EXIT_ON_CLOSE);
  19. pack();}
  20. /**
  21. * Creates new form DrawSquare
  22. * @param args
  23. */
  24. public static void main(String[] args) {
  25. DrawSquare ds = new DrawSquare("MD");
  26. ds.setVisible(true);
  27. }
  28. class DPanel extends JPanel {
  29. @Override
  30. protected void paintComponent(Graphics g) {
  31. super.paintComponent(g);
  32. int index=0 ;
  33. Color[] colors = { Color.yellow, Color.cyan, Color.orange, Color.pink,
  34. Color.magenta, Color.lightGray };
  35. for (int i= 0; i < 7; i ++ ) {
  36. Graphics2D g2d = (Graphics2D) g ;
  37.  
  38. // g2d.setColor(Color.blue);
  39. //g2d.setStroke(new BasicStroke(6));
  40. Rectangle2D rect = (new Rectangle2D.Double(10 , 10, 99, 99));
  41. Rectangle2D fill = (new Rectangle2D.Double(10 , 10, index, 99));
  42. // int index = (45) / 45 % colors.length;
  43. // g2d.setPaint(Color.length);
  44. g2d.fill(rect);
  45. }
  46. }
  47. public Dimension getPreferredSize() {
  48. return new Dimension(300,300);
  49. }
  50. }
  51. }
  52. /**
  53. * This method is called from within the constructor to initialize the form.
  54. * WARNING: Do NOT modify this code. The content of this method is always
  55. * regenerated by the Form Editor.
  56. */
  57. @SuppressWarnings("unchecked")
  58. // <editor-fold defaultstate="collapsed" desc="Generated Code">
  59. private void initComponents() {
  60. panel2 = new java.awt.Panel();
  61. setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  62. javax.swing.GroupLayout panel2Layout = new javax.swing.GroupLayout(panel2);
  63. panel2.setLayout(panel2Layout);
  64. panel2Layout.setHorizontalGroup(
  65. panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  66. .addGap(0, 309, Short.MAX_VALUE)
  67. );
  68. panel2Layout.setVerticalGroup(
  69. panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  70. .addGap(0, 195, Short.MAX_VALUE)
  71. );
  72. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  73. getContentPane().setLayout(layout);
  74. layout.setHorizontalGroup(
  75. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  76. .addGroup(layout.createSequentialGroup()
  77. .addGap(56, 56, 56)
  78. .addComponent(panel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  79. .addContainerGap(86, Short.MAX_VALUE))
  80. );
  81. layout.setVerticalGroup(
  82. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  83. .addGroup(layout.createSequentialGroup()
  84. .addGap(53, 53, 53)
  85. .addComponent(panel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  86. .addContainerGap(118, Short.MAX_VALUE))
  87. );
  88. pack();
  89. }// </editor-fold>
  90. /**
  91. * @param args the command line arguments
  92. */
  93. // Variables declaration - do not modify
  94. private java.awt.Panel panel2;
  95. // End of variables declaration
мы можем закрасить часть фигуры одним цветом и часть другим?

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

textual
Листинг программы
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6.  
  7. /**
  8.  *
  9.  * @author MD
  10.  */
  11. import javax.swing.*;
  12. import java.awt.*;
  13. import java.awt.geom.Rectangle2D;
  14. import java.util.TimerTask;
  15. import java.util.Timer;
  16. //import java.awt.event.ActionListener;
  17.  
  18. public class DrawSquare extends javax.swing.JFrame {
  19.     public static float i=0;
  20.     private long t = System.nanoTime();
  21.     private static Timer mTimer;
  22.     public static DPanel dPanel;
  23.     public DrawSquare(String title) throws HeadlessException {
  24.         super(title);
  25.  
  26.          dPanel = new DPanel();
  27.          getContentPane().add(dPanel);
  28.  
  29.     setDefaultCloseOperation(EXIT_ON_CLOSE);
  30.     pack();}
  31.     /**
  32.      * Creates new form DrawSquare
  33.      * @param args
  34.      */
  35.      public static void main(String[] args) {
  36.     DrawSquare ds = new DrawSquare("MD4");
  37.     mTimer = new Timer();
  38.     MyTimerTask mMyTimerTask = new MyTimerTask(dPanel);
  39.     mTimer.schedule(mMyTimerTask, 1000,1);
  40.     ds.setVisible(true);
  41.   }
  42.          
  43.    public Dimension getPreferredSize() {
  44.       return new Dimension(300,300);
  45.     }  
  46. }
  47.      class DPanel extends JPanel {
  48.    
  49.    protected void paintComponent(Graphics g) {
  50.      super.paintComponent(g);
  51.      Graphics2D g2d = (Graphics2D) g ;
  52.       int index=0;
  53.      
  54.       for (float i=0; i < 1; i +=0.01) {
  55.      
  56.  
  57.       g2d.setColor(new Color(Color.HSBtoRGB(DrawSquare.i, 1, 1)));
  58.       Rectangle2D rect = (new Rectangle2D.Double(index , 9, 1, 99));
  59.     g2d.fill(rect);
  60.      index++;
  61.            }
  62.           }
  63. }
  64. class MyTimerTask extends TimerTask {
  65.     private DPanel dPanel;
  66.     public MyTimerTask(DPanel dPanel)
  67.     {
  68.         this.dPanel=dPanel;
  69.     }
  70.         @Override
  71.         public void run() {
  72.                     int index=0;
  73.                      
  74.       Graphics g=dPanel.getGraphics();
  75.       Graphics2D g2d = (Graphics2D) g ;
  76.       for (float i=0; i < 1; i +=0.01) {
  77.      
  78.  
  79.       g2d.setColor(new Color(Color.HSBtoRGB(DrawSquare.i, 1, 1)));
  80.       Rectangle2D rect = (new Rectangle2D.Double(index , 9, 1, 99));
  81.     g2d.fill(rect);
  82.      index++;
  83.         //   }*/
  84.                     System.out.println(DrawSquare.i+=0.01);
  85.                        // dPanel.repaint();
  86.             //g2d.fill(rect)i+=0.01;
  87.         }
  88.     }}
  89.     /**
  90.      * This method is called from within the constructor to initialize the form.
  91.      * WARNING: Do NOT modify this code. The content of this method is always
  92.      * regenerated by the Form Editor.
  93.      */
  94.     @SuppressWarnings("unchecked")
  95.     // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
  96.     private void initComponents() {
  97.  
  98.         panel2 = new java.awt.Panel();
  99.  
  100.         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  101.  
  102.         javax.swing.GroupLayout panel2Layout = new javax.swing.GroupLayout(panel2);
  103.         panel2.setLayout(panel2Layout);
  104.         panel2Layout.setHorizontalGroup(
  105.             panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  106.             .addGap(0, 252, Short.MAX_VALUE)
  107.         );
  108.         panel2Layout.setVerticalGroup(
  109.             panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  110.             .addGap(0, 195, Short.MAX_VALUE)
  111.         );
  112.  
  113.         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  114.         getContentPane().setLayout(layout);
  115.         layout.setHorizontalGroup(
  116.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  117.             .addGroup(layout.createSequentialGroup()
  118.                 .addGap(56, 56, 56)
  119.                 .addComponent(panel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  120.                 .addContainerGap(143, Short.MAX_VALUE))
  121.         );
  122.         layout.setVerticalGroup(
  123.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  124.             .addGroup(layout.createSequentialGroup()
  125.                 .addGap(53, 53, 53)
  126.                 .addComponent(panel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  127.                 .addContainerGap(118, Short.MAX_VALUE))
  128.         );
  129.  
  130.         pack();
  131.     }// </editor-fold>                        
  132.  
  133.     /**
  134.      * @param args the command line arguments
  135.      */
  136.    
  137.     // Variables declaration - do not modify                    
  138.     private java.awt.Panel panel2;
  139.     // End of variables declaration

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут