@trashgod
Thanks for your answer, I modified it a bit to achieve what I was looking for; )
Now you can easily change the width in order to better see the image and adjust its contents, and the number is not repeated, which facilitates the perception of drawings (if any). Oh, and I added about 2 ~ 3 lines at the end to clarify this.
package edu.pi; import java.awt.Dimension; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; public class PiRaster extends JPanel { private static final long serialVersionUID = -1298205187260747210L; private static int W; private static int H; private static List<Integer> pi = new ArrayList<Integer>(); BufferedImage image; private int[] clut = { 0x000000, 0x787878, 0x008B00, 0x00008B, 0x008B8B, 0x008B00, 0xCDCD00, 0xFF4500, 0x8B0000, 0xFF0000 }; public PiRaster() { String s = "3." + "14159265358979323846264338327950288419716939937510" + "58209749445923078164062862089986280348253421170679" + "82148086513282306647093844609550582231725359408128" + "48111745028410270193852110555964462294895493038196" + "44288109756659334461284756482337867831652712019091" + "45648566923460348610454326648213393607260249141273" + "72458700660631558817488152092096282925409171536436" + "78925903600113305305488204665213841469519415116094" + "33057270365759591953092186117381932611793105118548" + "07446237996274956735188575272489122793818301194912" + "98336733624406566430860213949463952247371907021798" + "60943702770539217176293176752384674818467669405132" + "00056812714526356082778577134275778960917363717872" + "14684409012249534301465495853710507922796892589235" + "42019956112129021960864034418159813629774771309960" + "51870721134999999837297804995105973173281609631859" + "50244594553469083026425223082533446850352619311881" + "71010003137838752886587533208381420617177669147303" + "59825349042875546873115956286388235378759375195778" + "18577805321712268066130019278766111959092164201989"; char temp; for (int i = 0; i < s.length(); i++) { temp = s.charAt(i); if (temp >= 48 && temp <= 57) pi.add(s.charAt(i) - '0'); } W = 50; H = s.length() / W + 3; this.setPreferredSize(new Dimension(W * 10, H * 10)); } @Override public void paintComponent(Graphics g) { if (image == null) { image = (BufferedImage) createImage(W, H); int i = 0; boolean end = false; for (int row = 0; row < H && !end; row++) { for (int col = 0; col < W && !end; col++) { image.setRGB(col, row, clut[pi.get(i)]); if (++i == pi.size()) { i = 0; end = true; } } } } g.drawImage(image, 0, 0, getWidth(), getHeight(), null); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new JFrame("Pi raster"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new PiRaster()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } }
source share