如何在java图形中的其他图形之上绘制图形?

z3yyvxxp  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(305)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

六天前关门了。
改进这个问题
我正在用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);

由于某些原因,只有第一个圆显示在三角形之前,其他圆显示在三角形后面。

x8diyxa7

x8diyxa71#

请注意,第一个和第六个三角形看起来没问题(从左到右计数)。我怀疑,数据结构 polys 混乱或顺序错误。结果就是你画了位置3的芯片,但是三角形实际上是for循环迭代中的另一个位置。
为了验证这一点,我将使三角形的颜色取决于您的索引。抱歉,无法进一步帮助,因为 polys 结构未显示。

tkqqtvp1

tkqqtvp12#

我通过创建一组圆来解决这个问题( Ellipse2D.Double )在构造器中创建所有的圆(就像我在三角形数组中所做的那样),结果是惊人的。

相关问题