簡體   English   中英

如何使用fillPolygon在java swing中繪制星形

[英]How to draw star in java swing using fillPolygon

我在設置星的坐標時遇到問題,有沒有更好的解決方案。 我無法獲得正確的形狀。 有人可以幫我嗎?

  public void star(Graphics shapes)
{
    shapes.setColor(color);
    int[] x  = {42,52,72,52,60,40,15,28,9,32,42};
    int [] y = {38,62,68,80,105,85,102,75,58,20,38};
    shapes.fillPolygon(x, y, 5);
}

Sun 的實現提供了一些自定義的 Java 2D 形狀,如RectangleOvalPolygon等,但這還不夠。 有一些圖形用戶界面需要更多自定義形狀,例如Regular PolygonStar和帶圓角的Regular polygon 該項目提供了更多經常使用的形狀。 所有類都實現了Shape接口,允許用戶使用Graphics2D所有常用方法,如fill()draw() ,並通過組合它們來創建自己的形狀。

正多邊形星

編輯:

關聯

老實說,我會使用2D 圖形形狀 API,它們允許您“繪制”一個形狀,這比使用多邊形更簡單(恕我直言)。 優點是,它們易於繪制和變形

話雖如此,您實際遇到的問題是您沒有將正確的信息傳遞給fillPolygon方法。

如果您查看Graphics#fillPolygonJavaDocs ,您會注意到最后一個參數是點數:

nPoints - a 總點數。

但是你正在傳遞5 ,你的數組中實際上有11個點

就像是...

shapes.setColor(color);
int[] x  = {42,52,72,52,60,40,15,28,9,32,42};
int [] y = {38,62,68,80,105,85,102,75,58,20,38};
shapes.fillPolygon(x, y, 11);

現在應該繪制所有點,但您的某些坐標略有偏差,因此您可能需要檢查一下

Y 的倒數第二個數字應該是 60 而不是 20

g2.setColor(color);
int[] x  = {42,52,72,52,60,40,15,28,9,32,42};
int[] y = {38,62,68,80,105,85,102,75,58,60,38};
g2.fillPolygon(x , y, 11);

我在設置星的坐標時遇到問題,有沒有更好的解決方案

查看玩形狀 您應該能夠使用ShapeUtils類來生成您的形狀。

此類將為您生成點,因此您無需管理每個像素。

一個明星有 10 分,而不是 11 分

setBackground(Color.black);  
    int[]x={250,150,0,150,100,250,400,350,500,350};
    int[]y={100,200,200,300,400,300,400,300,200,200};
    g.fillPolygon( (x),(y),10);         
    setForeground(Color.cyan);

這將有助於繪制黑色背景和青色前景的星星

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM