為減少 JAR 體積,常將多張小圖合併為一張大圖 (圖集/精靈表)。繪製時用 setClip 只顯示所需區域。
setClip(x, y, width, height) 在螢幕上建立一個「可視窗口」,只有落在該矩形內的繪圖操作才會顯示。配合 drawImage 座標對齊,即可從大圖裁切顯示單張小圖。
public void setClip(int x, int y, int width, int height)
x, y:可視矩形左上角螢幕座標。width, height:可視矩形寬高。
// 假設大圖 image 包含 32x32 的小圖排列
// 要顯示第 1 行第 2 個 (座標 32,0)
g.setClip(10, 20, 32, 32); // 螢幕可視區:左上(10,20) 32x32
g.drawImage(image, 10, 20, Graphics.LEFT | Graphics.TOP); // 圖片左上對齊 (10,20)
// 此時只會顯示 image 中 (32,0) 到 (64,32) 的區域
// 用完後必須恢復全螢幕可視,否則後續繪圖會被限制
g.setClip(0, 0, getWidth(), getHeight());
本文來自編程入門網:原文連結