如何使用 BufferedImage 更改图像上文本的颜色?

Dyl*_*lan 1 java graphics bufferedimage

使用BufferedImage bgImage我想为图像上的文本设置黑色。

BufferedImage bgImage = createBgImageForText();
bgImage.createGraphics().drawString(player.getPlayerName(), 25, 15);
if ("Y".equalsIgnoreCase(player.getCaptain())) {
    bgImage.createGraphics().setPaint(Color.BLACK);
} else {
    bgImage.createGraphics().setPaint(Color.WHITE);
}

mainImg.getGraphics().drawImage(bgImage, 10, 10, null);
Run Code Online (Sandbox Code Playgroud)

但默认情况下,文本始终为白色。如何改变文字的颜色?

Bin*_*man 6

您需要存储Graphics您创建的实例bgImage.createGraphics(),然后您可以绘制文本之前设置颜色:

BufferedImage bgImage = createBgImageForText();
Graphics2D g = bgImage.createGraphics();
if ("Y".equalsIgnoreCase(player.getCaptain())) {
    g.setPaint(Color.BLACK);
} else {
    g.setPaint(Color.WHITE);
}
g.drawString(player.getPlayerName(), 25, 15);
g.dispose();
Run Code Online (Sandbox Code Playgroud)

  • 不需要转换为 Graphics2D。之后为了良好的秩序做一个`g.dispose();`。 (2认同)