How can I center Graphics.drawString() in Java?

前端 未结 3 2237
忘了有多久
忘了有多久 2020-12-14 00:45

I\'m currently working on the menu system for my Java game, and I wonder how I can center the text from Graphics.drawString(), so that if I want to dra

3条回答
  •  攒了一身酷
    2020-12-14 01:31

    I used the answer on this question.

    The code I used looks something like this:

    /**
     * Draw a String centered in the middle of a Rectangle.
     *
     * @param g The Graphics instance.
     * @param text The String to draw.
     * @param rect The Rectangle to center the text in.
     */
    public void drawCenteredString(Graphics g, String text, Rectangle rect, Font font) {
        // Get the FontMetrics
        FontMetrics metrics = g.getFontMetrics(font);
        // Determine the X coordinate for the text
        int x = rect.x + (rect.width - metrics.stringWidth(text)) / 2;
        // Determine the Y coordinate for the text (note we add the ascent, as in java 2d 0 is top of the screen)
        int y = rect.y + ((rect.height - metrics.getHeight()) / 2) + metrics.getAscent();
        // Set the font
        g.setFont(font);
        // Draw the String
        g.drawString(text, x, y);
    }
    

提交回复
热议问题