當我嘗試將旋轉應用於當前的g2d對象時,它不旋轉它,它將它呈現在相同的地方(在我的上下文中)。根據我對旋轉方法的理解,它將變換應用到當前的圖形上下文中,轉換任何渲染後的像素(這可能是我出錯的地方)。這裏是有問題的代碼:Java旋轉問題
@Override
public void paint(final Graphics graphics) {
super.paint(graphics);
final Graphics2D g2d = (Graphics2D) graphics;
....
....
g2d.setColor(Color.RED);
g2d.setStroke(new BasicStroke(SMALL_LINE_THICKNESS));
if (isLattice1Drawn) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1));
// lattice1 and lattice2 are Polygon objects
g2d.draw(lattice1);
// This fades in the second Polygon over the first
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
// This line should rotate it, but doesn't
g2d.rotate(Math.toRadians(210));
g2d.draw(lattice2);
.....
謝謝,邁克
編輯1 作爲傑夫的建議,我試過只具有旋轉和油漆繪畫,讓我用下面的代碼:
@Override
public void paint(final Graphics graphics) {
super.paint(graphics);
final Graphics2D g2d = (Graphics2D) graphics;
g2d.rotate(Math.toRadians(210));
g2d.draw(lattice2);
return;
// Rest of paint .................
不幸的是,這並沒有幫助,任何其他建議將是最受歡迎的。
編輯2: 當我不調用旋轉時,多邊形被渲染,但是當我什麼都不做時會發生。任何人都可以解釋嗎?
我相信你是對旋轉後轉化像素正確。什麼是格子?那是你創造的東西嗎? – jeff 2012-07-18 16:16:50
@jeff lattice1和lattice2是java.awt.Polygon的實例,沒有什麼特別的:) – mikeythemissile 2012-07-18 16:19:11
我很茫然 - 如果你把lattice2放到一個paint方法本身只有旋轉會怎樣? – jeff 2012-07-18 17:02:22