java 2d画图示例分享(用java画图)
java 2d api通过扩展抽象窗口工具箱(awt),为java程序提供了二维图像,文本和图形的功能。这个复杂的渲染包支持线形图像,文本和图形,为富用户界面,复杂绘图程序和图像处理器开发者提供灵活的,功能强大的框架。java 2d对象出现在一个平面中,称为用户坐标系空间,和设备坐标系空间。当对象在屏幕或打印机中渲染时,用户空间坐标系被转换成设备空间坐标系。
import java.awt.basicstroke;
import java.awt.color;
import java.awt.graphics2d;
import java.awt.renderinghints;
import java.awt.image.bufferedimage;
import java.io.file;
import java.io.ioexception;
import java.util.iterator;
import java.util.random;
import javax.imageio.*;
import javax.imageio.stream.imageoutputstream;
public class test {
public static void main(string[] args) throws ioexception {
int width = 800;
int height = 800;
bufferedimage image = new bufferedimage(
width, height, bufferedimage.type_int_rgb);
graphics2d g2d = image.creategraphics();
g2d.setcolor(color.white);
g2d.fillrect(0, 0, width, height);
g2d.setrenderinghint(renderinghints.key_antialiasing,
renderinghints.value_antialias_on);
random random = new random();
int wo = 0;
int ho = 0;
for (int i = 0; i < 10; i++) {
int x = random.nextint(width);
int y = random.nextint(height);
g2d.setcolor(new color(random.nextint(256),
random.nextint(256), random.nextint(256)));
g2d.setstroke(new basicstroke(1));
g2d.drawstring("node"+i, x, y);
g2d.drawarc(x, y, 20, 20, 0, 360);
if(i!=0){
g2d.drawline(wo, ho, x, y);
}
wo = x;
ho = y;
}
g2d.dispose();
imagewriter writer = null;
imagetypespecifier type =
imagetypespecifier.createfromrenderedimage(image);
iterator iter = imageio.getimagewriters(type, "jpg");
if (iter.hasnext()) {
writer = (imagewriter)iter.next();
}
if (writer == null) {
return;
}
iioimage iioimage = new iioimage(image, null, null);
imagewriteparam param = writer.getdefaultwriteparam();
param.setcompressionmode(imagewriteparam.mode_explicit);
param.setcompressionquality((float) ((10) / 10.0));
imageoutputstream outputstream =
imageio.createimageoutputstream(new file("c:/test.jpg"));
writer.setoutput(outputstream);
writer.write(null, iioimage, param);
}
}