Diagonaler Farbverlauf wie?

Status
Nicht offen für weitere Antworten.
J

JMe

Gast
Hallo,
ich möchte gerne einen diagonalen Farbverlauf in einem Quadrat erstellen, mein Quelltext schaut bisher so aus, allerdings ist der Farbverlauf nicht diagonal und ich weiß momentan nicht weiter:


Code:
import java.awt.*;
import javax.swing.*;

public class farbverlauf extends JApplet
{
    public void init()
    {  
    }
    
public void paint (Graphics g)
{
 g.drawString("Farbverlauf",20,20);
 for (int k=1; k<=10;k++)
 {
 for (int i=1;i<=10;i++)
 {
 g.setColor(new Color (i*25,255,255));
 g.fillRect(i*40,40*k,40,40);
 g.setColor(new Color(0,0,0));
 g.drawRect(i*40,40*k,40,40);
 }
}
}
   
}



Da es sich mal wieder um eine doofe Schulaufgabe handelt muss ich das so machen...
Hoffe es kann mir jemand helfen danke
 
J

JMe

Gast
ne ich meinte das mit den Kästchen dass wir das so machen sollen nur ich hab kein Plan wie das funktionieren soll, weil ich mir schon dachte dass es da sicherlich andere Funktionen gibt
 

Marco13

Top Contributor
Doch. Sicher. Wenn ich an einem Rechner mit JDK bin schau' ich nochmal. Bis dahin ... jo. Vielleicht schaffst du es selbst, oder jemand anderes sagt noch was dazu...
 

Marco13

Top Contributor
Ja, und was jetzt nicht so ist, wie es sein soll, ist nicht ganz klar.

Sollen die x- und y-Komponenten berücksichtigt werden? Oder nur die Diagonale?
Code:
import java.awt.*;
import javax.swing.*;

public class farbverlauf extends JApplet
{
    public void init()
    {
    }

public void paint (Graphics g)
{
g.drawString("Farbverlauf",20,20);
for (int k=1; k<=10;k++)
{
for (int i=1;i<=10;i++)
{

//------ Entweder
int d = (int)Math.sqrt(i*i+k*k);
g.setColor(new Color (d*18,255,255));

//------ oder
//g.setColor(new Color (i*25,k*25,255));


g.fillRect(i*40,40*k,40,40);
g.setColor(new Color(0,0,0));
g.drawRect(i*40,40*k,40,40);
}
}
}

}
 

hansz

Aktives Mitglied
Hallo zusammen,

ich hab mal ein Programm eingestellt, das die Klasse java.awt.GradientPaint verwendet.
Vielleicht kannst Du ja was damit anfangen.
Das Programm öffnet ein Swing-Fenster und zeichnet ein Quadrat mit diagonalem Farbverlauf - links oben rot, rechts unten grün. :)


Code:
/* Test.java */

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import java.awt.image.*;


public class Test extends JPanel {
  
  public static void createAndShowGUI() {
    JFrame.setDefaultLookAndFeelDecorated(true); 
    JFrame frame = new JFrame("Test");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel comp  = new Test();
    frame.add(comp);
    frame.setSize(400, 200);
    frame.setVisible(true); 
  }
    
  public static void main(String[] args) { 
    Runnable runner = new Runnable() {
        public void run() {
          createAndShowGUI();
        }
    };
    SwingUtilities.invokeLater(runner);
  }
  
  public void paintComponent(Graphics g) { 
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D)g;
    
    int x = 150;
    int y = 150;
        
    BufferedImage bi = new BufferedImage(x, y, BufferedImage.TYPE_INT_ARGB);
    Graphics2D big2 = bi.createGraphics();
    
    GradientPaint gp = new GradientPaint(0, 0, Color.RED, 190, 80, Color.GREEN);
    big2.setPaint(gp);
    Rectangle2D rectangle = new Rectangle2D.Double(0, 0, x, y);
    big2.fill(rectangle);
    
    g2.drawImage(bi, null, 10, 10);
 	
  }
}



Gruß hansz :wink:
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben