私の先生は今週末にプロジェクトのために家を建てたいと思っていました。屋根のために使っている三角形の色を塗りつぶす方法を理解することができます。私はJavaで非常に新しいので、コードはかなりうまくありますが、誰かが私を助けることができたら、それは素晴らしいでしょう!(私の先生はコードの長さに本当に気をつけません。 。 ここに私のコード:この三角形の色を3行で塗りつぶすにはどうすればよいですか?
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.SwingUtilities;
import javax.swing.JFrame;
public class HouseMaker
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setSize(3000, 3000);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setBackground(Color.BLUE);
HouseComponent component = new HouseComponent();
frame.add(component);
frame.setVisible(true);
}
}
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import javax.swing.JComponent;
import java.awt.Polygon;
/*
A component that draws an house with a sun and other things
*/
public class HouseComponent extends JComponent
{
public void paintComponent(Graphics g)
{
// Recover Graphics2D
Graphics2D g2 = (Graphics2D) g;
// Draw the house frame
g2.setColor(Color.GRAY);
Rectangle frame = new Rectangle(300, 400, 500, 230);
g2.fill(frame);
// Draw the roof
Line2D.Double roof = new Line2D.Double(300, 400, 800, 400);
g2.setColor(Color.RED);
g2.drawLine(300, 400, 550, 200);
g2.setColor(Color.RED);
g2.drawLine(800, 400, 550, 200);
g2.setColor(Color.RED);
g2.draw(roof);
//sun in the sky
g2.setColor(Color.YELLOW);
g.drawOval(50,50,100,100);
g2.setColor(Color.YELLOW);
g2.fillOval(50,50,100,100);
g2.drawLine(50,50,20,20);
g2.setColor(Color.YELLOW);
g2.drawLine(150,150,180,180);
g2.drawLine(150,50,180,20);
g2.drawLine(50,150,20,180);
g2.drawLine(30,100,-10,100);
g2.drawLine(100,30,100,-10);
g2.drawLine(170,100,210,100);
g2.drawLine(100,170,100,210);
//Draw the door
g2.setColor(Color.BLACK);
Rectangle door = new Rectangle(450, 510, 50, 120);
g2.fill(door);
//Draw door knob
g2.setColor(Color.WHITE);
g2.drawOval(450,560,10,10);
g2.setColor(Color.WHITE);
g2.fillOval(450,560,10,10);
//Draw three windows
g2.setColor(Color.BLACK);
Rectangle window = new Rectangle(350, 520, 50, 50);
g2.fill(window);
g2.setColor(Color.BLACK);
Rectangle window1 = new Rectangle(550, 520, 50, 50);
g2.fill(window1);
g2.setColor(Color.BLACK);
Rectangle window2 = new Rectangle(650, 520, 50, 50);
g2.fill(window2);
//Draw window panes
g2.setColor(Color.WHITE);
g2.drawLine(350,545,400,545);
g2.drawLine(375,520,375,570);
g2.drawLine(550,545,600,545);
g2.drawLine(575,520,575,570);
g2.drawLine(650,545,700,545);
g2.drawLine(675,520,675,570);
//Draw ground
g2.setColor(Color.GREEN);
Rectangle ground = new Rectangle(0, 630, 1500, 1500);
g2.fill(ground);
}
}
三角形を描画して塗りつぶすには、 'drawLine()'を3回呼び出しないでください。 'drawPolygon()'を使って描画し、 'fillPolygon()'を使って描画します。 「グラフィックス」(https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html)用のjavadocを簡単に読んだら、利用可能な 'fill'メソッドを示しています。 – Andreas
それは問題ですが。 drawPolygonの使い方は分かりません。私はオプションとしてそれを研究してきましたが、私はそれを使用する方法を理解していません。試してみるとうまくいかない。 – CrypticZero
どのように三角形を描きますか? 3つの 'x、y '点を使い、AからB、BからC、CをAに戻します。 .org/wiki/Polygon)。 3つの 'x、y '点で定義される形状。 [fillPolygon(int [] xPoints、int [] yPoints、int nPoints) '](https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html#fillPolygon-int: A-int:A-int-):* x座標とy座標の配列で定義された閉じた多角形を塗りつぶします。* – Andreas