在JPanel上繪製Path2D時,我有一個奇怪的行爲。
一些形狀得到怎樣的一個尾巴,你可以在這個截圖中看到:JPanel上的Java Path2D.Double用'尾部'繪製
當我改變類型Line2D.Double,這是我希望它:
下面是繪製路徑/線路代碼:
Path2D.Double path = new Path2D.Double();
Graphics2D g = (Graphics2D)this.getGraphics();
for(int i=0; i<geom.size(); i++)
{
double x = ddGeom.getX(geom.get(i));
double y = ddGeom.getY(geom.get(i));
if(i==0)
path.moveTo(x-draw_center.x, y-draw_center.y);
path.lineTo(x-draw_center.x, y-draw_center.y);
}
g.draw(path);
你有一個想法,其中的「尾巴」在Screenshot1從何而來?我使用的SDK版本6
非常感謝您的幫助
編輯:當改變代碼段
if(i==0)
path.moveTo(x-draw_center.x, y-draw_center.y);
else
path.lineTo(x-draw_center.x, y-draw_center.y);
最多(也許75%)的尾巴消失。任何想法爲什麼發生這種情況
當我用Path2D,我已經沒有這個問題,並根據您的代碼,我不能看到你的問題。考慮創建併發布[sscce](http://sscce.org)。有一件事讓我覺得奇怪,就是你在繪圖方法中創建了Path2D,而不是一次創建它,然後在繪圖方法中繪製它。爲什麼這樣做? –
這些可能是由於anti-alias的影響,請嘗試:g2d。setRenderingHints(Graphics2D.ANTIALIASING,Graphics2D.ANTIALIAS_ON); – whatnick
@whatnick:我不是說你錯了,但我從來沒見過抗鋸齒做到這一點。也許是一個奇怪的筆畫,但不是反鋸齒。 –