要求,用java画饼图,出的图片格式是.emf(meta file)不许用任何开放代码 比如freehep。
     我做出来的一个版本,图片扩展名是.emf,但其实图片还是jpeg的。
     
     上代码  这是修改前的,没有生出圆,只是出了图片。
          
//生成图片的   Java   Bean     
//日期:2001-08-24     
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Arc2D;
import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;public class ChartGraphics { BufferedImage image; public static void main(String[] args) { ChartGraphics a = new ChartGraphics();
a.graphicAsGeneration(1, 1, 1, 1, 1); } public void createImage(String fileLocation) {
try {
FileOutputStream fos = new FileOutputStream(fileLocation);
BufferedOutputStream bos = new BufferedOutputStream(fos);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
encoder.encode(image);
bos.close();
} catch (Exception e) {
System.out.println(e);
}
} public void graphicsGeneration(int h1, int h2, int h3, int h4, int h5) { final int X = 10;
int imageWidth = 300;// 图片的宽度
int imageHeight = 300;// 图片的高度
ChartGraphics chartGraphics = new ChartGraphics();
chartGraphics.image = new BufferedImage(imageWidth, imageHeight,
BufferedImage.TYPE_INT_RGB);
Graphics graphics = chartGraphics.image.getGraphics();
Font objFont = new Font("TimesRoman", Font.BOLD + Font.ITALIC, 28); Graphics2D graphics1 = (Graphics2D) graphics;
graphics1.setColor(Color.white);
graphics1.fillRect(0, 0, imageWidth, imageHeight);
graphics1.setColor(Color.red);
graphics1.fillOval(1, 8, 50, 100);
graphics1.setFont(objFont);
graphics1.drawString("23232", 80, 300);

graphics1.setRenderingHint(RenderingHints.KEY_ANTIALIASING,                   RenderingHints.VALUE_ANTIALIAS_ON);
Arc2D openArc = new Arc2D.Float(100, 100, 50, 100, 0, 180, Arc2D.OPEN);
openArc.setAngleExtent(175);
graphics1.fill(openArc); graphics1.setColor(Color.blue);
;
graphics1.drawString("666666666666", 20, 80); Ellipse2D e = new Ellipse2D.Double();
e.setFrameFromCenter(50, 50, 70 + 10, 70 + 10);
graphics1.draw(e); graphics1.draw(new Arc2D.Double(40, 50, 100, 50, 0, 60, Arc2D.OPEN));
graphics1.draw(new Arc2D.Double(40, 50, 100, 50, 120, 60, Arc2D.OPEN));
graphics1.draw(new Arc2D.Double(40, 50, 100, 50, 240, 60, Arc2D.OPEN)); chartGraphics.createImage("D:\\ok.emf"); }
}        问题就出在下面这两句话 
         JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
        encoder.encode(image);
        出的图片还是JPEG,有没有什么方法能做到类似的Encoder,用于.emf文件呢。         我查了一下,在java里好像非常难实现,除了用freehep。
         哪个高手赐教下,怎么在java里比较简单的能自己实现呢? - _ -!