**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
六天前关门了。
改进这个问题
我正在用java图形制作一个双陆棋游戏。游戏的图形是用图画完成的。我能在每列(上下)画出table的三角形。我试着在圆(芯片)的顶部添加一个圆形,有些画在三角形的后面,有些画在三角形的前面。我能做些什么来解决这个问题?
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
int colorType = 1;
int dx = width/25;
int location = width/50;
for (int i = 0; i < 12; i++)
{
//draw triangle - works
g2d.setColor((colorType==1)?POINT1_COLOR:POINT2_COLOR);
if(i%2==0)
colorType = (colorType==1)?2:1;
g2d.fill(polys[i]);
//draw chip on top of triangle - doesnt work
g2d.setColor(BLACK);
Ellipse2D.Double circle = new Ellipse2D.Double(location, 200, width/24, width/24);
g2d.fill(circle);
location += 2*dx;
}
}
上面的代码是我创建的名为gamedrawer的类中的paintcomponent函数,它扩展了jpanel。我有一个多边形[]多边形数组来保存每个三角形点的位置。位置和dx是在哪里画芯片(圆)。
我甚至试过Fillova,我得到了同样的结果:
g2d.fillOval(location, 200, width/24, width/24);
由于某些原因,只有第一个圆显示在三角形之前,其他圆显示在三角形后面。
2条答案
按热度按时间x8diyxa71#
请注意,第一个和第六个三角形看起来没问题(从左到右计数)。我怀疑,数据结构
polys
混乱或顺序错误。结果就是你画了位置3的芯片,但是三角形实际上是for循环迭代中的另一个位置。为了验证这一点,我将使三角形的颜色取决于您的索引。抱歉,无法进一步帮助,因为
polys
结构未显示。tkqqtvp12#
我通过创建一组圆来解决这个问题(
Ellipse2D.Double
)在构造器中创建所有的圆(就像我在三角形数组中所做的那样),结果是惊人的。