我有一个椭圆形,我想为国际象棋贴上它的名字。我想使用椭圆形,并将其上的作品名称用作字符串,但是我似乎无法使其正常工作。

在形状上甚至可以绘制字符串吗?

我的密码

    public void drawPieces(Graphics2D g2d){
    for(int x = 0; x < 8; x++) {
        for(int y = 0; y < 8; y++) {
        //reds
        if(board[x][y]==24){
            g2d.setColor(Color.red);
            g2d.fillOval(x*80, y*80, 80, 80);
            //drawstring goes here
                            g2d.setColor(Color.blue);
                            g2d.drawString("test", x*80, y*80);
        }


欢迎任何建议

编辑我的网格方法以防万一。

    public void drawGrid(Graphics2D g2d){


    g2d.drawLine(0, 0, 0, 639);
    g2d.drawLine(0, 0, 639, 0);
    g2d.drawLine(0, 639, 639, 639);
    g2d.drawLine(639, 0, 639, 639);

    // draw the horizontal lines using a loop from one to 7, coordiates of each line is (0, x*80, 640, x*80) also
    // draw vertical lines with coordinates of (x*80, 0, x*80, 640)
    for(int i = 1; i < 8; i++) {
        g2d.drawLine(0, i*80, 640, i*80);
        g2d.drawLine(i*80, 0, i*80, 640);
    }
    //drawing the black and white squares
    for (int row = 0; row < 8; row++)
        for (int col = 0; col < 8; col++) {
            if ( (row % 2 == 0 && col % 2 == 0) ||  ( row % 2 == 1 &&  col % 2 == 1)  ){
                g2d.setColor(black);
                g2d.fillRect(row*80,col*80,80,80);

            }
        }
}

最佳答案

我只能说可以在椭圆上画线,而我只是在自己的游戏中这样做。最上面的绘图代码应该没问题。您只需要检查传递给绘图方法的参数和if-condition。这是我绘制代码的节选
在椭圆上使用略有不同的方法,但是您也应该工作:

public void draw(Graphics g){
    Graphics2D g2d = (Graphics2D) g;
    g2d.fill(new Ellipse2D.Double(center.x, center.y, itemSize, itemSize));
    g2d.setColor(Color.white);
    g2d.setFont(new Font("Arial", Font.BOLD, 14));
    g2d.drawString(itemName, (int)center.x, (int)center.y+18);
}


itemName是一些字符串,不要混淆前两个参数

g2d.fill(...(-,-,itemSize,itemSize))不是椭圆的中心,而是其矩形矩形的左上角。

10-07 18:47