2013-05-03 55 views
-4

好的,所以我在编写这个程序时遇到了问题。我完成了第一部分,但我不知道如何完成它。我尝试过不同的解决方案和一切,但我仍然没有线索。这是我到目前为止。我需要做的就是让它在四个角落开始。Java中的绘图线

public void paintComponent(Graphics g) 
{ 
    super.paintComponent(g); 
    int width = getWidth(); 
    int height = getHeight(); 
    int number, x, y, dx, dy; 
    x = 0; 
    y = height; 
    number = 15; 
    dx = width/number; 
    dy = height/number; 
    for (int i = 1; i < number; i++) 
    { 
     x += dx; 
     y -= dy; 
     g.drawLine(0, 0, x, y); 
    } 
} 
+1

请正确填写您的代码并重写您的问题。前两行没有任何说法,并且“我需要做什么”的肉词...很难理解 – leonbloy 2013-05-03 17:39:39

+1

以便在发布[SSCCE](http://sscce.org/)后立即获得更好的帮助,简短,可运行,可编译的,只是关于JFrame内部的JComponent/JPanel,那么你的问题将是可回答的 – mKorbel 2013-05-03 17:42:46

+1

你没有说你的问题是什么,你试图去实现什么。 – 2013-05-03 17:43:26

回答

2

我收集到你想要从每个角向右对角线划出15条线的扇出。我建议写一个程序来吸取点的风扇为任意线段,然后使用:

drawFan(Graphics g, 
     int number,  // number of fan lines 
     int x0, int y0, // coordinates of the point 
     int sx, int sy, // coordinates of the line segment start 
     int ex, int ey) // coordinates of the line segment end 
{ 
    int x = sx, 
     y = sy, 
     dx = (ex - sx)/number, 
     dy = (ey - sy)/number; 
    for (int i = 1; i < number; ++i) { 
     x += dx; 
     y += dy; 
     g.drawLine(x0, y0, x, y); 
    } 
} 

然后,您可以为每个角落的对角线适当的值进行调用。

public void paintComponent(Graphics g) 
{ 
    super.paintComponent(g); 
    int width = getWidth(); 
    int height = getHeight(); 
    drawFan(g, 15, 0, 0, 0, height, width, 0);   // top left corner 
    drawFan(g, 15, 0, height, 0, 0, width, height);  // bottom left corner 
    drawFan(g, 15, width, height, 0, height, width, 0); // bottom right corner 
    drawFan(g, 15, width, 0, 0, 0, width, height);  // top right corner 
} 
0

这里是解决方案,我的建议是了解坐标系在Java中的工作原理,这很容易。

public void paintComponent(Graphics g){ 
    super.paintComponent(g); 
    int widthX = getWidth(); 
    int heightY = getHeight(); 

    int num, i, j; 
    num = 15; 
    i = 0; 
    j = 15; 

    while(i != 16 && j != -1){ 

     g.drawLine(0, 0, widthX*i/num, heightY*j/num); 
     g.drawLine( widthX*i/num, heightY*j/num, widthX, heightY); 
     g.drawLine( widthX*i/num, heightY*i/num, widthX, 0); 
     g.drawLine( widthX*j/num, heightY*j/num, 0, heightY); 

     i++; 
     j--; 

    }//end while 
}//end method paintComponent