用Graphics2D 做 emf图片 我做了两天没做出来,高手赐教

xiaochongwei 2008-07-10 06:57:35
要求,用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里比较简单的能自己实现呢? - _ -!
...全文
154 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaochongwei 2008-07-16
  • 打赏
  • 举报
回复
vc做成,结贴,散分
wudisanjiaomao 2008-07-14
  • 打赏
  • 举报
回复
帮顶~
xiaochongwei 2008-07-13
  • 打赏
  • 举报
回复
楼上的,无语了。。。
jingulang 2008-07-11
  • 打赏
  • 举报
回复
天那 最不喜欢AWT 和SWING 感觉太累
做图的话还是别用JAVA了

用PHOTOSHOP
你要喜欢做3D就用MAYA



xiaochongwei 2008-07-11
  • 打赏
  • 举报
回复
哪个神仙给个机会啊,帮帮忙吧

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧