【java/graphics2d】在笛卡尔坐标系绘制图片示例
先上图:
再上代码:
import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.FileOutputStream; import javax.imageio.ImageIO; public class PictureMaker2 { public static void main(String[] args) throws Exception{ final int W=1000; final int H=800; BufferedImage img=new BufferedImage(W,H,BufferedImage.TYPE_INT_RGB); Graphics2D g2d=(Graphics2D)img.getGraphics(); // 进行坐标变换 AffineTransform trans = new AffineTransform(); trans.translate(0,H-50); trans.rotate(getRad(180.0),0,0); trans.scale(-1,1); g2d.setTransform(trans); // 填充矩形 g2d.setColor(Color.BLUE); g2d.fillRect(0, -50, W, H); // 绘直线 int x1=200,y1=500; g2d.setColor(Color.white); g2d.setStroke(new BasicStroke(2.0f)); g2d.drawLine(0, 0, x1, y1); // 绘文字 g2d.setFont(new Font("宋体",Font.BOLD,36)); putString(g2d,"测试文字1",x1,y1); // 绘直线 int x2=400,y2=300; g2d.setColor(Color.red); g2d.setStroke(new BasicStroke(2.0f)); g2d.drawLine(0, 0, x2, y2); // 绘文字 g2d.setFont(new Font("宋体",Font.BOLD,24)); putString(g2d,"测试文字2",x2,y2); // 绘直线 int x3=800,y3=200; g2d.setColor(Color.yellow); g2d.setStroke(new BasicStroke(2.0f)); g2d.drawLine(0, 0, x3, y3); // 绘文字 g2d.setFont(new Font("宋体",Font.BOLD,12)); putString(g2d,"测试文字3",x3,y3); g2d.dispose();// g2d使命完成 ImageIO.write(img, "PNG", new FileOutputStream("c:\\hy\\2.PNG")); System.out.println("图片做成"); } // 传入度数,返回弧度 private static double getRad(double degree) { return degree*3.1415927/180.0f; } private static void putString(Graphics2D g2d,String text,int x,int y) { AffineTransform previousTrans = g2d.getTransform(); AffineTransform newtrans = new AffineTransform(); FontMetrics fm2=g2d.getFontMetrics(); int textWidth=fm2.stringWidth(text); newtrans.translate(x-textWidth/2, (800-50)-y); g2d.setTransform(newtrans); g2d.drawString(text,0,0); g2d.setTransform(previousTrans); }
}
接下来将其类化,再绘制直方图。
END
分类:
Java.Graphics2D
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2020-01-31 【高中数学/指数函数、幂函数】寻找曲线y=2^x与y=x^2的三个交汇点
2020-01-31 对韩峰著《SQL优化最佳实践》P7 案例的质疑
2020-01-31 执行Python程序出现“SyntaxError: Non-UTF-8 code starting with '\xb6'...”错误怎么办?
2020-01-31 2020年1月31日 安装Python的BeautifulSoap库记录
2020-01-31 Python 3.8.1 各版本下载地址
2020-01-31 2020年1月31日 安装Python的requests包记录