📄 exporttoimg.java
字号:
package drawsmart.itsv.image;
import java.io.File;
import java.awt.image.BufferedImage;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Color;
import javax.imageio.ImageIO;
import java.awt.Font;
import java.text.AttributedString;
import java.awt.font.TextAttribute;
import drawsmart.itsv.FrameSwing;
import java.awt.FontMetrics;
import java.awt.Shape;
import java.awt.BasicStroke;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class ExportToImg {
private BufferedImage bi = null;
//private int width = 0;
//private int height = 0;
private Graphics2D g2d = null;
private File imgFile;
private String extStr = "jpg";
private FrameSwing mainFrame=null;
/**
* 初始构造器
* @param width
* @param height
* @param file
* @param ext
*/
public ExportToImg(int width, int height, File file, String ext,FrameSwing mainFrame) {
this.mainFrame =mainFrame;
bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
g2d = bi.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, width, height);
this.imgFile = file;
this.extStr = ext;
}
/**
*
* @param width
* @param height
* @param fileUrl
* @param ext
*/
public ExportToImg(int width, int height, String fileUrl, String ext,FrameSwing mainFrame) {
this(width, height, new File(fileUrl), ext,mainFrame);
}
public ExportToImg(int width, int height, String fileUrl) {
this(width, height, new File(fileUrl));
}
public ExportToImg(int width, int height, File file) {
this(width, height, file, "jpg",null);
}
/**
* 画图带文字
* @param shape Shape
* @param labelStr String
* @param font Font
*/
public void draw(Shape shape,
String labelStr, Font font,int frameWidth) {
draw(shape, Color.BLACK, Color.WHITE, labelStr,
font,frameWidth);
}
/**
* 画图带文字
* @param shape Shape
* @param labelStr String
* @param font Font
*/
public void draw(Shape shape,
Color borderColor, Color fillColor,int frameWidth) {
draw(shape, borderColor, fillColor, "",new Font("Dialog", 14, 14),frameWidth);
}
/**
* 画图带颜色带文字
* @param startX
* @param startY
* @param width
* @param height
* @param borderColor
* @param fillColor
*/
public void draw(Shape shape,
Color borderColor, Color fillColor,String labelStr,
Font font,int frameWidth) {
g2d.setColor(borderColor);
//System.out.println(width);
//设置组件的边框宽度
float f=((BasicStroke)g2d.getStroke()).getLineWidth();
BasicStroke s = new BasicStroke(frameWidth);
g2d.setStroke(s);
g2d.draw(shape);
g2d.setColor(fillColor);
g2d.fill(shape);
s = new BasicStroke(f);
g2d.setStroke(s);
//绘制字体
//获得绘制字体的起点
float startX=(float)shape.getBounds().getX();
float startY=(float)shape.getBounds().getY();
float width=(float)shape.getBounds().getWidth();
float height=(float)shape.getBounds().getHeight();
float strStartX = (float) width / 2;
float strStartY = (float) height / 2;
strStartX += startX;
strStartY += startY;
FontMetrics metrics=mainFrame.getFontMetrics(font);
if(!labelStr.trim().equals(""))
{
byte[] bytyLength = labelStr.getBytes();
//System.out.println(bytyLength.length);
int labelLength = metrics.bytesWidth(bytyLength, 0, bytyLength.length - 1);
//System.out.println(labelLength);
strStartX = (width - labelLength) / 2 + startX; //再减字符窜长度的一半,使其居中
if (width <= labelLength && labelStr.length() > 2) {
if (labelLength != width) {
int leng = (int) ( (labelLength - width) / 6);
labelStr = labelStr.substring(0, labelStr.length() - leng - 1) +
"...";
}
else {
labelStr = labelStr.substring(0, labelStr.length() - 1) + "...";
}
bytyLength = labelStr.getBytes();
labelLength = metrics.bytesWidth(bytyLength, 0, bytyLength.length - 1);
strStartX = (width - labelLength) / 2 + startX; //再减字符窜长度的一半,使其居中
}
drawString(labelStr, font, strStartX, strStartY);
}
}
/**
* 绘制字体
* @param drawStr
* @param font
*/
public void drawString(String drawStr, Font font, float startX, float startY) {
drawString( drawStr, font, startX, startY,Color.BLACK);
}
public void drawString(String drawStr, Font font, float startX, float startY,Color color) {
g2d.setColor(color);
AttributedString attrStr = new AttributedString(drawStr);
attrStr.addAttribute(TextAttribute.FONT,font);
g2d.drawString(attrStr.getIterator(), startX, startY);
// g2d.drawString();
}
/**
* 画线
* @param startX1
* @param startY1
* @param startX2
* @param startY2
* @param borderColor
*/
public void drawLine(int startX1, int startY1, int startX2, int startY2,
Color borderColorm,int lineWidth) {
//设置组件的边框宽度
float f=((BasicStroke)g2d.getStroke()).getLineWidth();
BasicStroke s = new BasicStroke(lineWidth);
g2d.setStroke(s);
g2d.setColor(Color.BLACK);
g2d.drawLine(startX1, startY1, startX2, startY2);
s = new BasicStroke(f);
g2d.setStroke(s);
}
public void drawLine(int startX, int startY, int width, int height,int lineWidth) {
drawLine(startX, startY, width, height, Color.BLACK,lineWidth);
}
/**
* 保存到文件中
* @return
*/
public boolean close() {
boolean bl = true;
try {
//释放画图资源
g2d.dispose();
//保存到文件中
ImageIO.write(bi, this.extStr, this.imgFile);
}
catch (Exception e) {
System.out.println("close imageFile Err:" + e);
bl = false;
}
return bl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -