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);
    }
}
提前谢谢了
回答:
多边形与自身相交。fillPolygon方法无法清楚地确定哪个点在哪个点以及哪个点在哪个点之外。从fillPolygon javadoc:
多边形内部的区域是使用偶数填充规则(也称为交替规则)定义的。
也许您可以将多边形分成三个单个的多边形。
以上是 java swing:多边形填充颜色问题 的全部内容, 来源链接: utcz.com/qa/405504.html








