【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