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

回到顶部