java實現柱狀圖

 這個程序沒有任何的使用價值,起碼我這麼認爲,因爲malab應付這個任務
     * 也就兩行的代碼就搞定了,寫這個代碼的目的完全是因爲我們組裏面他們寫了個程序

     * 生成一個漸變的柱狀圖,我就是好奇的想寫一寫



生成的結果可以看下圖片效果,具體柱狀圖的顏色我沒有特別細膩的調,將就看一下效果

代碼如下:


import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.imageio.ImageIO;

public class a
{
	
	
	public static void main(String[] argv)
	{
		new create_img();
	}
}

class create_img
{
	
		public create_img()
		{
			try
			{
				Font myfont = new Font("宋體", Font.ITALIC, 22);
				float []number = {0,0,0,0,0,0,0,0,0,0};
				for(int i=0;i<10;i++)
				{
					number[i] = i+1;
				}
				int max = 10;
				Toolkit tk = Toolkit.getDefaultToolkit();
				//得到屏幕的長和寬
				int width = (int)tk.getScreenSize().getWidth();
				int height = (int)tk.getScreenSize().getHeight();
				//圖像大小
				BufferedImage image = new BufferedImage(width/2, height/2,BufferedImage.TYPE_INT_BGR);
				Graphics g = image.getGraphics();
				g.setColor(new Color(255, 255,255));
				g.fillRect(1, 1, width/2 - 1, height/2 - 1);
				g.setColor(new Color(255, 255,255));
				g.drawRect(0, 0, width/2 - 1, height/2 - 1);
				g.setFont(myfont);
				g.setColor(new Color(255, 26,135));
				
				Color c = new Color(227, 227, 227);
				
				for(int i=0;i<number.length;i++)
				{
					//10個柱狀圖外殼
					g.setColor(c);
					g.fillRect(72+(33+40)*i, 54, 33, 133);
					g.setColor(c);
					g.drawRect(72+(33+40)*i, 54, 33, 133);
					Color myc = null;
					//顏色數組
					myc= new Color(10+20*i,10,20*i);
					g.setColor(myc);
					//顏色柱狀圖
					g.fillRect(72+(33+40)*i, 54+(133-(int)Math.round(133*(number[i]/max))), 33, (int)Math.round(133*(number[i]/max)));
					g.setColor(myc);
					g.drawRect(72+(33+40)*i, 54+(133-(int)Math.round(133*(number[i]/max))), 33, (int)Math.round(133*(number[i]/max)));
					
				}
				c = new Color(181, 181, 181);
				//10個柱狀圖的頂端zifuchuan
				for(int i = 0;i<number.length;i++){
					if(i==0){
						g.setColor(c);
						g.setFont(myfont);
						g.drawString(number[i]+"s", 72,48);
					}else{
						g.setColor(c);
						g.setFont(myfont);
						g.drawString(number[i]+"s", 72+(33+40)*i,48);
					}
				}
				//釋放圖像所包含的資源
				g.dispose();
				String filename = "D:\\1.jpg";
				File file = new File(filename);
				if(!file.exists())
				{
					file.createNewFile();
				}
				//將圖片數據流寫入到文件中
				FileOutputStream s = new FileOutputStream(file);
				ImageIO.write(image, "JPEG", s);
					
			}catch(IOException e)
			{
				e.printStackTrace();
			}
	}
	
}

自認爲註釋還是比較清楚的!!
發佈了105 篇原創文章 · 獲贊 10 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章