私は3つのことを考え出すのに問題があります。 (図面パネルで作成:http://www.buildingjavaprograms.com/DrawingPanel.java)Java:図面を描くことで星を描くとポイントを結ぶ
問題1:ポリゴンを中央にして曲げないように描画します。より多くのポイントを描いても目立たない。
問題#2:星のすべての点をまとめて巨大な円(点線)にします。おそらく、その方法が最良でない限り、なぜ起こっているのかわかりません。
問題#3:少量の点で描画すると、点を正しく描かないことがわかり、正方形のように見えます。
本当に助けていただきありがとうございます。
import java.awt.*;
public class StarSampler {
public static void main(String[] args)
{
DrawingPanel panel = new DrawingPanel(500, 500);
Graphics2D g = panel.getGraphics();
g.setColor(Color.BLUE);
fillStar(g, 250, 250, 150, 5, 1);
}
public static void fillStar(Graphics2D g, int ctrX, int ctrY, int radius, int nPoints, double spikiness)
{
double xDouble[] = new double[2*nPoints];
double yDouble[] = new double[2*nPoints];
int xPoint[] = new int[100];
int yPoint[] = new int[100];
for (int i = 0; i < 2*nPoints; i++)
{
double iRadius = (i % 2 == 0) ? radius : (radius * spikiness);
double angle = (i * 720.0)/(2*nPoints);
xDouble[i] = ctrX + iRadius * Math.cos(Math.toRadians(angle));
yDouble[i] = ctrY + iRadius * Math.sin(Math.toRadians(angle));
for (int j = 0; j < nPoints; j++) // Casts for ints and doubles
{
xPoint[j] = (int) xDouble[j];
yPoint[j] = (int) yDouble[j];
}
}
g.fillPolygon(xPoint, yPoint, nPoints); // Creates polygon
// Polygon gets drawn crookedly
g.drawPolyline(xPoint, yPoint, nPoints); // Draws lines to connect points
// Two lines go straight to (0,0) when nPonts*2 and nothing without *2?
}
}
マイ出力:
(ラベル付きの点がなければ、ちょうど例えば2つ星)私の目標出力:
:メイン・メソッドは、単純なテスト-UIを管理するためのコードを保持しています。しかし、私はコードを本当に感謝し、あなたが実装したロジックを理解しようとしています。 – Aramza
@Aramza UIコンポーネントはまったく問題ではありません。 'updateImage'メソッドにはスターをペイントするすべてのロジックが含まれていますが、' main'メソッドはUIとその作成だけを処理します。 'updateImage'メソッドの' BufferedImage'パラメータは 'Graphics'オブジェクトで簡単に置き換えることができます。実際、このパラメータは正確に1回だけ使用されます。前記 'Graphics'-Objectを検索する – Paul