【java/graphics】在JFrame中仅绘制缩放图像示例
【目的】
在graphics上下文中绘制图片,需要放大或缩小绘制。
【关键语句】
g.drawImage(img, left, top, width, height, null);
以上参数中width和height是画到画布上的宽度和高度,它们的尺寸比原图大就是放大,比原图小就是缩小。
【代码】
package test230505; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon; import javax.swing.JFrame; /** * 在JFrame中仅绘制缩放图像示例 * */ public class DrawScaledImgFrame extends JFrame{ private static final long serialVersionUID = 7431267380511524244L; public final static int W=1200; public final static int H=700; public void paint(Graphics g) { final Font Song16=new Font("宋体", Font.BOLD, 18); final Color Golden_Color=new Color(0, 0, 0); // 画黑色背景 g.setColor(Color.WHITE); g.fillRect(0, 0, W, H); ImageIcon icon = new ImageIcon("ljfl.jpg"); int iconWidth = icon.getIconWidth(); int iconHeight = icon.getIconHeight(); g.setColor(Golden_Color); g.setFont(Song16); // 绘制原图 Image original=icon.getImage(); g.drawImage(original, 50, 50, iconWidth, iconHeight, null);// 与原图尺寸一致则不变 g.drawString("原图", 50, 50); // 绘制缩小到1/4的图像 g.drawImage(original, 450, 50, iconWidth/2, iconHeight/2, null);// 比原图尺寸小即缩小 g.drawString("缩小图", 450, 50); // 绘制放大到4倍的图像 g.drawImage(original, 850, 50, iconWidth*2, iconHeight*2, null);// 比原图尺寸大即放大 g.drawString("放大图", 850, 50); } public static void main(String[] args) { DrawScaledImgFrame fm=new DrawScaledImgFrame(); fm.setTitle("DrawScaledImgFrame");// 设置标题 fm.setLocation(10,20);// 设置左上角位置 fm.setSize(DrawScaledImgFrame.W, DrawScaledImgFrame.H);// 设置宽高 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置缺省关闭操作 fm.setVisible(true);// 设置窗格可见 } }
【运行结果】
END
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2022-05-06 【SpringBoot】怎样在SpringBoot程序启动后立即执行一些代码
2022-05-06 【Java/线程】用线程池避免线程争抢有限的数据库连接资源
2022-05-06 【Canvas技法】椭圆画法
2020-05-06 如何让Web程序在点击按钮后出现如执行批处理程序般的效果
2020-05-06 Agumater 增加基本数据上传下载能力
2020-05-06 Agumater 爬虫进度带上了百分比,消除了.0
2020-05-06 Java程序取MySQL的datetime字段,如何消除时间尾后讨厌的".0"