2
私はJComponentの背景のためにpaintComponent
メソッドをオーバーライドしています。すべてうまくいっています。Java JComponent - 左下隅からペイントを開始しますか?
ただし、左上の代わりに左下隅からペイントしたいと思います。
何かを変換する必要がありますか?
私はJComponentの背景のためにpaintComponent
メソッドをオーバーライドしています。すべてうまくいっています。Java JComponent - 左下隅からペイントを開始しますか?
ただし、左上の代わりに左下隅からペイントしたいと思います。
何かを変換する必要がありますか?
はい、あなたは左下隅から描画するAffineTransform
を使用することができます。
コード:
public static void main(String[] args) {
JFrame frame = new JFrame("Test");
frame.add(new JComponent() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
// save the "old" transform
AffineTransform old = g2d.getTransform();
// update graphics object with the inverted y-transform
g2d.translate(0, getHeight() - 1);
g2d.scale(1, -1);
// draw what you want
g2d.drawLine(0, 0, 300, 200);
// restore the old transform
g2d.setTransform(old);
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setVisible(true);
}
クール豆の男のおかげで、私は見ているだろう。 – Ben
私の画像が上下が逆の場合を除き、どうもありがとうございます:/。将来のユーザーのためのFYI AffineTransformは 'java.awt.geom.AffineTransform'にあります。 – Ben
はい、「デフォルト」変換で何かを描画したい場合は、変更する前に(super.paintComponent(g);の直後に)行う必要があるので、変換はグラフィックスオブジェクトへの呼び出しを変換します。 ) – dacwe