【发布时间】:2018-12-22 02:01:12
【问题描述】:
我需要在从图像中获得的Graphics 对象上绘制带有黑色轮廓的白色文本。我首先用黑色绘制相同的文本 4 次(向左或向右移动一个像素),然后用白色绘制一次。但是,如果轮廓需要超过 1 像素宽,这将无法正常工作,并且看起来确实像一个 hack。有没有更好的方法来做到这一点?
final BufferedImage image = ImageIO.read(new File("./test.jpg"));
Graphics g = image.getGraphics();
g.setFont(g.getFont().deriveFont(45F));
// coordinates
int x = 100;
int y = 100;
String text = "Hello world";
g.setColor(Color.black);
g.drawString(text, x + 1, y - 1);
g.drawString(text, x + 1, y + 1);
g.drawString(text, x - 1, y - 1);
g.drawString(text, x - 1, y + 1);
g.setColor(Color.white);
g.drawString(text, x, y);
【问题讨论】: