如何在java.awt.geom.Area对象上使用抗锯齿?

如何在java.awt.geom.Area对象上使用抗锯齿?,java,graphics2d,antialiasing,smoothing,Java,Graphics2d,Antialiasing,Smoothing,我想在我的小idleGame上应用抗锯齿 在我的第一次尝试中,我只是使用了g.fillRect来创建我的矩形,但是抗锯齿不起作用。然后我用区域注释了一些内容并启动了测试。它似乎仍然没有应用抗锯齿。唯一的副作用是,由于使用了面积,速度变慢了 private void render() { BoardParameters MBP=myBoardParameters; BufferStrategy bs=myDisplay.getCanvas().getBufferStrategy(); 如果(bs

我想在我的小idleGame上应用抗锯齿

在我的第一次尝试中,我只是使用了
g.fillRect
来创建我的矩形,但是抗锯齿不起作用。然后我用
区域
注释了一些内容并启动了测试。它似乎仍然没有应用抗锯齿。唯一的副作用是,由于使用了面积,速度变慢了

private void render()
{
BoardParameters MBP=myBoardParameters;
BufferStrategy bs=myDisplay.getCanvas().getBufferStrategy();
如果(bs==null)
{
myDisplay.getCanvas().createBufferStrategy(2);
返回;
}
Graphics2D g2=(Graphics2D)bs.getDrawGraphics();
//清屏
g2.clearRect(0,0,MBP.getWindowWidth(),MBP.getWindowHeight());
//在这里画!
区域面积[]={new Area(),new Area(),new Area()};
绘图单位(g2,面积);
int[][]cs=myBoardParameters.getColorScheme();
g2.setColor(新颜色(cs[0][0]、cs[0][1]、cs[0][2]);
g2.填充(面积[0]);
g2.setColor(新颜色(cs[1][0]、cs[1][1]、cs[1][2]);
g2.填充(区域[1]);
g2.setColor(新颜色(cs[2][0]、cs[2][1]、cs[2][2]);
g2.填充(区域[2]);
g2.setRenderingHint(RenderingHints.KEY_抗锯齿,
RenderingHints.VALUE_ANTIALIAS_ON);
//画完图!
b.show();
g2.dispose();
}
专用抽气装置(图g,面积[]面积)
{
BoardParameters MBP=myBoardParameters;
对于(int i=0;i
有人有什么想法吗,我可以试试吗


(可能平滑是更好的描述?

渲染提示-,有关更多信息,请参阅hm,它不符合我的要求。我想将区域显示为曲线斑点,也许这更能描述它?使用不同的形状,而不是矩形
private void render()
{
    BoardParameters MBP = myBoardParameters;

    BufferStrategy bs = myDisplay.getCanvas().getBufferStrategy();
    if (bs == null)
    {
        myDisplay.getCanvas().createBufferStrategy(2);
        return;
    }
    Graphics2D g2 = (Graphics2D)bs.getDrawGraphics();
    //Clear Screen
    g2.clearRect(0, 0, MBP.getWindowWidth(), MBP.getWindowHeight());
    //Draw Here!

    Area area[] = {new Area(),new Area(),new Area()};

    drawUnits(g2,area);


    int[][] cs = myBoardParameters.getColorScheme();
    g2.setColor(new Color(cs[0][0],cs[0][1],cs[0][2]));
    g2.fill(area[0]);
    g2.setColor(new Color(cs[1][0],cs[1][1],cs[1][2]));
    g2.fill(area[1]);
    g2.setColor(new Color(cs[2][0],cs[2][1],cs[2][2]));
    g2.fill(area[2]);

    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);

    //End Drawing!
    bs.show();
    g2.dispose();
}

private void drawUnits(Graphics g, Area[] area)
{
    BoardParameters MBP = myBoardParameters;

    for (int i = 0; i < MBP.getRows(); i++)
    {
        for (int j = 0; j < MBP.getCollumns(); j++)
        {
            Animal actAnimal = myBoardData.animals[j][i];
            int actualArea = 0;
            if (actAnimal != null)
            {
                int[][] cs = myBoardParameters.getColorScheme();
                switch (actAnimal.getClass().getSimpleName())
                {
                    case "Fish":
                        //g.setColor(new Color(cs[0][0],cs[0][1],cs[0][2]));
                        actualArea = 1;
                        break;
                    case "Shark":
                        //g.setColor(new Color(cs[1][0],cs[1][1],cs[1][2]));
                        actualArea = 2;
                        break;
                    case "Plankton":
                        //g.setColor(new Color(cs[2][0],cs[2][1],cs[2][2]));
                        actualArea = 3;
                        break;
                    default:
                        System.out.println("Unknown Unit found in 'myBoardParameters.units[" + j + "][" + i + "]': " + actAnimal);
                        break;
                }
            }else{
                //g.setColor(Color.cyan);
            }
            //g.fillRect(j * MBP.getCellWidth(), i * MBP.getCellHeight(), MBP.getCellWidth(), MBP.getCellHeight());
            Shape shape = new Rectangle2D.Double(j * MBP.getCellWidth(), i * MBP.getCellHeight(), MBP.getCellWidth(), MBP.getCellHeight());
            Area areaAdd = new Area(shape);
            switch (actualArea)
            {
                case 1:
                    area[0].add(areaAdd);
                    break;
                case 2:
                    area[1].add(areaAdd);
                    break;
                case 3:
                    area[2].add(areaAdd);
                    break;
            }
        }
    }
}