2010-07-30 58 views
1

任何人都可以诊断我面临的问题吗? 当你运行你可以看到中间部分留空演示中,我需要填补整个区域..提前java swing:多边形填充颜色问题

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Polygon; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 


public class FillDemo 
{ 
    public static void main(String aths[]) 
    { 
     JFrame f = new JFrame(); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel pnl = new PolygonDemo(); 
     pnl.setSize(100, 200); 
     f.getContentPane().add(pnl); 
     f.setSize(400,280); 
     f.setLocation(200,200); 
     f.setVisible(true); 
    } 
} 

class PolygonDemo extends JPanel 
{ 
    public PolygonDemo() 
    { 
     setBackground(Color.white); 
    } 

    protected void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 
     Graphics2D g2 = (Graphics2D)g; 
     Polygon p=new Polygon(); 

     p.addPoint(100,0); 
     p.addPoint(100,100); 
     p.addPoint(0,100); 
     p.addPoint(0,0); 

     p.addPoint(80,0); 
     p.addPoint(80,20); 
     p.addPoint(40,20); 
     p.addPoint(40,40); 
     p.addPoint(80,40); 
     p.addPoint(80,100); 
     p.addPoint(20,100); 
     p.addPoint(20,80); 
     p.addPoint(60,80); 
     p.addPoint(60,60); 
     p.addPoint(20,60); 
     p.addPoint(20,0); 
     p.addPoint(0,0); 

     g2.setColor(Color.BLACK); 
     g2.draw(p); 
     g2.setColor(new Color(120,250,100)); 
     g2.fillPolygon(p); 
     //g2.fillPolygon(p.xpoints,p.ypoints,p.npoints); 

    } 

} 

非常感谢

回答

2

你的多边形本身相交。 fillPolygon方法不能清楚地确定哪个点在哪个点,哪个点在外面。来自fillPolygon javadoc:

多边形内的区域是使用偶数填充规则(也称为交替规则)定义的。

也许你可以将你的多边形分成三个单一的多边形。

+0

感谢Nokul立即和答辩权 我可以能够与下面填写正改变 g2.fillPolygon(p.xpoints页。 ypoints中,4); \t g2.fillPolygon(p); 但现在我的画线不可见。我的意思是我可以简单地将不同的颜色应用于我的曲线,以便可以看到它? 再次感谢 – lifeline2 2010-07-30 08:46:28

+0

尝试在调用draw之前调用fillPolygon。 – nokul 2010-07-30 09:56:33

+0

太棒了!非常感谢你的工作。根据您的建议进行以下更改: g2.setColor(new Color(120,250,100)); \t g2.fillPolygon(p.xpoints,p.ypoints,4); \t g2.fillPolygon(p); \t g2.setColor(Color.BLACK); \t g2.draw(p); – lifeline2 2010-07-30 10:31:32

1

绘制矩形并填充颜色.....

public void paint(Graphics g) 
    { 
int[] xPoints = {100,50,150}; 
int[] yPoints = {100,200,200}; 

     g.setColor(Color.black); 
     g.drawPolygon(xPoints, yPoints, 3); 
     g.setColor(Color.red); 
     g.fillPolygon(xPoints, yPoints, 3); 

    }