首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 100例:圖片縮放與翻轉繪製

     編輯:Java 程式設計入門

展示 Graphics.drawImage() 多種重載形式,實現圖片正常顯示、縮小繪製、水平翻轉。程式以 JFrame 為視窗,命令列參數傳入圖片路徑。

import javax.swing.*;
import java.awt.*;

class ImgDemo extends JFrame {
    Image image;

    ImgDemo(String filename) {
        setTitle("drawImage Example");
        try {
            image = getToolkit().getImage(filename);
            setIconImage(image);
        } catch (Exception e) { e.printStackTrace(); }
        setSize(600, 250);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setVisible(true);
    }

    public void paint(Graphics g) {
        Insets insets = getInsets();
        int x = insets.left, y = insets.top;
        int w = image.getWidth(this);
        int h = image.getHeight(this);

        // 1. 原尺寸繪製
        g.drawImage(image, x, y, this);
        // 2. 縮小 1/4 繪製 (加 1 像素邊框)
        g.drawRect(x, y, w/4+1, h/4+1);
        g.drawImage(image, x+1, y+1, w/4, h/4, this);
        // 3. 水平翻轉 (源矩形 x 方向反轉)
        g.drawImage(image, x+w, y, x+2*w, y+h, w, 0, 0, h, this);
    }

    public static void main(String[] args) {
        if (args.length == 1) new ImgDemo(args[0]);
        else System.err.println("usage: java ImgDemo image-file");
    }
}

drawImage 關鍵參數說明

  • drawImage(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, observer):將來源矩形 (sx1,sy1)-(sx2,sy2) 映射到目標矩形 (dx1,dy1)-(dx2,dy2)。若 sx1 > sx2 則產生水平翻轉效果。
  • 觀察者 this (實作 ImageObserver) 讓元件在圖片非同步載入完成時自動重繪。

應用場景:遊戲角色朝向切換、縮圖預覽、鏡像效果等。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved