Skip to content

Instantly share code, notes, and snippets.

@aoetk
Created July 13, 2025 16:17
Show Gist options
  • Save aoetk/3dccdf23ec4fa1a9a1c6fedd20692186 to your computer and use it in GitHub Desktop.
Save aoetk/3dccdf23ec4fa1a9a1c6fedd20692186 to your computer and use it in GitHub Desktop.
Java2Dで縁取り文字列を描画する例
package aoetk.java2dsample;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.font.TextAttribute;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Map;
import java.util.Objects;
public class Java2DSample {
public static void main(String[] args) throws Exception {
if (args.length == 0) {
System.out.println("specify output path");
System.exit(1);
}
var outputPath = Path.of(args[0]);
Files.createDirectories(outputPath);
var image = ImageIO.read(Objects.requireNonNull(Java2DSample.class.getResourceAsStream("/java2dtest.png")));
var graphics = (Graphics2D) image.getGraphics();
var font = new Font(Map.of(
TextAttribute.FAMILY, Font.SANS_SERIF,
TextAttribute.SIZE, 80,
TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD));
var glyphVector = font.createGlyphVector(graphics.getFontRenderContext(), "Outlined Text");
var outlineShape = glyphVector.getOutline(120.0f, 980.0f);
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
graphics.setStroke(new BasicStroke(10.0f));
graphics.setColor(Color.BLACK);
graphics.draw(outlineShape);
graphics.setColor(Color.WHITE);
graphics.fill(outlineShape);
var outputFile = outputPath.resolve("output.png");
ImageIO.write(image, "png", outputFile.toFile());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment