原点の移動
座標システムと原点
Graphicsクラスでは、座標の原点は指定しない場合
オブジェクト(コンポーネントや画像など)の左上角が原点 ( 0 , 0 ) となっています
コンポーネントなどに描画されている内容を一括して移動させたい場合など
何らかの理由で、Graphicsの原点を移動させたい場合があります
そのような場合はGraphicsクラスのtranslate()メソッドを使用します
public abstract void translate( int x, int y )
xとyには、それぞれ新しく設定するx座標とy座標を指定します
グラフィックスコンテキストはこのメソッドで指定された座標を新しく原点とします
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
/* <applet code="App43.class" width="300"height="300">
<param name="img" value="img/test.jpg">
</applet>
*/
public class App43 extends Applet implements MouseMotionListener {
Image img;
int x = 0 , y = 0 , tx , ty;
public void init() {
img = getImage(getDocumentBase() , getParameter("img"));
addMouseMotionListener(this);
}
public void paint(Graphics g) {
g.translate( x , y );
g.drawImage(img , 0 , 0 , this);
}
public void mouseMoved(MouseEvent e) {
tx = e.getX() - x;
ty = e.getY() - y;
}
public void mouseDragged(MouseEvent e) {
x = e.getX() - tx;
y = e.getY() - ty;
repaint();
}
}
マウスをドラッグすると、原点が変更されるので画像が移動します
画像は常にグラフィックスコンテキストの座標 0 , 0 の位置に出力されていることに注目してください
原点の移動を利用すれば、スクローラーなどを使わずにコンテキストを移動させられます
必要に応じて、使用してください