0

This program generates the 6 faces of a colour cube.
The faces are displayed in a JPanel, and they are also saved to C:/Faces as PNG files.
So non-windows users might have to alter code slightly.

import java.awt.Dimension;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class Main extends JFrame
{
	private static final long serialVersionUID = 1L;

	public Main()
	{
		Drawer drawer=new Drawer();
		drawer.setPreferredSize(new Dimension(3*256+2,2*256+1));
		
		this.setTitle("Colour Cube Faces - Images saved to C:/Faces folder");
		this.setResizable(false);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.getContentPane().add(drawer);
		this.pack();
		this.setVisible(true);
	}
	
	
	public static void main(String[] args)
	{
		new Main();
	}
}





class Drawer extends JPanel
{
	private static final long serialVersionUID = 1L;

	BufferedImage[] buffs=new BufferedImage[6];
	
	public Drawer()
	{
		createBuffs();
		
		saveBuffs(new File("C:/Faces"));
	}
	

	public void paintComponent(Graphics g)
	{
	    super.paintComponent(g);
	    Graphics2D g2=(Graphics2D)g;
	    g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,
	           	            RenderingHints.VALUE_STROKE_PURE);	
        
	    g2.drawImage(buffs[0],0,0,null);
	    g2.drawImage(buffs[1],257,0,null);
	    g2.drawImage(buffs[2],514,0,null);
	    
	    g2.drawImage(buffs[3],0,257,null);
	    g2.drawImage(buffs[4],257,257,null);
	    g2.drawImage(buffs[5],514,257,null);
	}


	private void createBuffs()
	{
		int[][] data=new int[][]{
				{0,0,255,   1,0,0,   0,-1,255},
				{0,0,0,   -1,0,255,   0,-1,255},
				{1,0,0,   0,0,0,      0,-1,255},
				{-1,0,255,   0,0,255,      0,-1,255},
				{1,0,0,   0,-1,255,      0,0,255},
				{1,0,0,   0,1,0,      0,0,0}
		};
		
		for(int lp=0;lp<6;lp++)
		{
		    buffs[lp]=new BufferedImage(256,256,BufferedImage.TYPE_INT_RGB);
		    Graphics2D g2=buffs[lp].createGraphics();
		    drawFace(data[lp],g2);
		    g2.dispose();
		}
		
	}
	
	
	private void drawFace(int[] d,Graphics2D g2)
	{
		for(int x=0;x<=255;x++) for(int y=0;y<=255;y++)
		{
			g2.setColor(new Color(d[0]*x+d[1]*y+d[2],
					              d[3]*x+d[4]*y+d[5],
					              d[6]*x+d[7]*y+d[8]));
			g2.drawLine(x,y,x,y);
		}
	}

	
	private void saveBuffs(File dir)
	{
		// MAKE FOLDER IF DOESNT EXIST
		if(!dir.exists()) dir.mkdir();
	
		File output;
		for(int lp=0;lp<6;lp++)
		{
			String fileName="pic"+lp+".png";
			output=new File(dir.toString()+"/"+fileName);
			try
			{
				ImageIO.write(buffs[lp],"PNG",output);
			}
			catch(IOException e){}
		}
	}
}
2
Contributors
2
Replies
3
Views
9 Years
Discussion Span
Last Post by cms271828
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.