2012-05-31 50 views
-1

我想填滿一個三角形。我試圖自己使用我想填滿三角形

g.fillPolygon(Triangle.x1, Triangle.x2, Triangle.x3, Triangle.y1, 
     Triangle.y2, Triangle.y3); 

但我得到一些錯誤。誰能幫我這個?

import javax.swing.*; 
import javax.swing.event.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.applet.*; 

public class Vehicle extends JFrame 

{ 
    final int WIDTH = 900; int HEIGHT = 650; 



public Vehicle() 
    { 
     //the following code creates the JFrame 
     super("Radical Racing"); 
     setSize(WIDTH,HEIGHT); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setVisible(true); 

} 
public void paint(Graphics g) 
{ 

    g.setColor(Color.DARK_GRAY); 
    g.fillRect(0,0,WIDTH,HEIGHT); 


    int x1, y1 ,x2, y2, x3,y3; 
    x1 = x2 = x3 = 200; 
    y1 = y2 = y3 = 390; 

    { 
      triangle (g, x1=174, y1, x2=204, y2, x3=189, y3=360); 

    } 
    g.setColor(Color.green); 
    g.fillPolygon(Triangle.x1, Triangle.x2, Triangle.x3, Triangle.y1, Triangle.y2, Triangle.y3); 
    triangle(g,x1,y1,x2,y2,x3,y3); 
} 

void triangle(Graphics g,int x1,int y1, 
     int x2, int y2, int x3, int y3){ 
     g.drawLine (x1, y1, x2, y2); 
     g.drawLine (x2, y2, x3, y3); 
     g.drawLine (x3, y3, x1, y1); 
} 



public static void main(String[]args) 
    { 
     new Vehicle(); 
    } 

} 
+0

你應該添加Java作爲標籤,以便人們知道您使用的是什麼語言。這將有助於引導人們回答你的問題,他們更有可能提供幫助。 – TEOUltimus

+1

你得到了什麼錯誤 –

回答

2

不客氣,我建議有時候使用oracle java api。這真的是開發者友好的。 :)

您沒有任何帶有靜態x1字段的三角類,爲什麼Triangle.x1 ...? :)爲什麼自己的塊調用triangle()?

import javax.swing.*; 
import javax.swing.event.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.applet.*; 
public class Vehicle extends JFrame { 

    final int WIDTH = 900; 
      int HEIGHT = 650; 

    public Vehicle() { 
     // the following code creates the JFrame 
     super("Radical Racing"); 
     setSize(WIDTH, HEIGHT); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setVisible(true); 

    } 
    public void paint(Graphics g) { 

     g.setColor(Color.DARK_GRAY); 
     g.fillRect(0, 0, WIDTH, HEIGHT); 

     int x1, y1, x2, y2, x3, y3; 
     x1 = x2 = x3 = 200; 
     y1 = y2 = y3 = 390; 
     triangle(g, x1 = 174, y1, x2 = 204, y2, x3 = 189, y3 = 360); 

     g.setColor(Color.green); 
     g.fillPolygon(new int[] {x1, x2, x3}, new int[] {y1, y2, y3}, 3); 
     triangle(g, x1, y1, x2, y2, x3, y3); 
    } 

    void triangle(Graphics g, int x1, int y1, int x2, int y2, int x3, int y3) { 
     g.drawLine(x1, y1, x2, y2); 
     g.drawLine(x2, y2, x3, y3); 
     g.drawLine(x3, y3, x1, y1); 
    } 

    public static void main(String[] args) { 
     new Vehicle(); 
    } 

} 
2

nvrfrgt答案工程和修復你(給了他一個+1),但也有,你可以清理一些其他的東西,是值得牢記(和太長的評論)任何錯誤。

首先,我認爲你的意思是HEIGHT是最終的?否則使其小寫。

如果您正在繪製一堆賽車三角形或其他東西 - 您正在繪製相同的三角形兩次(不會更改您的x和y值),那麼以後可能會有所影響,因此其中一個會浪費。

triangle (g, x1=174, y1, x2=204, y2, x3=189, y3=360); 
... 
triangle(g, x1, y1, x2, y2, x3, y3); 

你如何初始化你的x和y值不是最乾淨的。您將它們全部設置爲特定的數字,然後轉向並在下一行中更改它們。爲什麼有初始值?下面的代碼段更有意義,我反正(儘管這似乎仍然有點太magic numbery

int x1 = 174; int x2 = 204; int x3 = 189; 
int y1 = 390; int y2 = 390; int y3 = 360; 
triangle(g, x1, y1, x2, y2, x3, y3); 

如果你要畫的三角形,在相同的顏色填充,然後繪製行可能是不必要的你(使1個像素差異?)。如果是這種情況,可以刪除三角形()調用,或者用填充多邊形代替三角形實現。最終,這樣的事情是一個比較圓滑的(仍然可以在它的工作,雖然):

public class Vehicle extends JFrame { 

    final int WIDTH = 900; 
    final int HEIGHT = 650; // Made this final 

    public Vehicle() { 
     // the following code creates the JFrame 
     super("Radical Racing"); 
     setSize(WIDTH, HEIGHT); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setVisible(true); 
    } 

    public void paint(Graphics g) { 

    g.setColor(Color.DARK_GRAY); 
    g.fillRect(0, 0, WIDTH, HEIGHT); 

    int x1 = 174; int x2 = 204; int x3 = 189; 
    int y1 = 390; int y2 = 390; int y3 = 360; 
    g.setColor(Color.green); 
    // Got rid of redundant drawing 
    triangle(g, x1, y1, x2, y2, x3, y3); 
    } 

    void triangle(Graphics g, int x1, int y1, int x2, int y2, int x3, int y3) { 
    // Left both the lines and the fill so you could play with color or something. 
    g.drawLine(x1, y1, x2, y2); 
    g.drawLine(x2, y2, x3, y3); 
    g.drawLine(x3, y3, x1, y1); 
    g.fillPolygon(new int[] {x1, x2, x3}, new int[] {y1, y2, y3}, 3); 
    } 

    public static void main(String[] args) { 
    // Want to save this as something so you can move it around later 
    Vehicle greenTriangle = new Vehicle(); 
    } 
0

第1顏色:

g.setColor(R, G, B); 

然後填充:

g.fillTriangle(x1, y1, x2, y2, x3, y3);