Graphics2D loGraphic.drawString 字体不显示

迫切功能是否能 2021-09-17 14:22:03
相同的代码另一个就好好的这个就不行,就是一张图片如何在图片上吧 md 的写上去
public static BufferedImage singleWatermarkImage(String md,int width,int height) {
    //md="sdgnewfewgo"
    //定义图片宽度和高度
   /* int width = 5;
    int height = 5;*/
     Font font = new Font("微软雅黑", Font.BOLD,  1);

    BufferedImage img = new BufferedImage(width, height, TYPE_INT_ARGB);
    Graphics2D loGraphic = img.createGraphics();
    //获取文本size
    FontMetrics loFontMetrics = loGraphic.getFontMetrics(font);
    int liStrWidth = loFontMetrics.stringWidth("md");
    int liStrHeight = loFontMetrics.getHeight();

    //文本显示样式及位置
    loGraphic.setColor(Color.white);
    loGraphic.fillRect(0, 0, (int) width, (int) height);
    loGraphic.translate(((int) width - liStrWidth) / 2, ((int) height - liStrHeight) / 2);
    //倾斜度设置
    loGraphic.rotate(Math.toRadians(-0));
    loGraphic.translate(-((int) width - liStrWidth) / 4, -((int) height - liStrHeight) / 4);
    loGraphic.setFont(font);
    loGraphic.setColor(Color.black);
    loGraphic.drawString(md, ((int) width - liStrWidth) / 2, ((int) height - liStrHeight) / 2);
    loGraphic.dispose();
    return img;
}

这个是好的 就是图片的计算方式不同 。求大佬解惑

public static BufferedImage tileWatermarkImage(String text, Font font, Color textColor, double height,
                                               double width, int angle) {
    //定义图片宽度和高度
    BufferedImage img = new BufferedImage((int) width, (int) height, TYPE_INT_ARGB);
    Graphics2D loGraphic = img.createGraphics();
    //获取文本size
    FontMetrics loFontMetrics = loGraphic.getFontMetrics(font);
    int liStrWidth = loFontMetrics.stringWidth(text);
    int liStrHeight = loFontMetrics.getHeight();

    //文本显示样式及位置
    loGraphic.setColor(Color.white);
    loGraphic.fillRect(0, 0, (int) width, (int) height);
    loGraphic.translate(((int) width - liStrWidth) / 2, ((int) height - liStrHeight) / 2);
    //倾斜度设置
    loGraphic.rotate(Math.toRadians(-angle));
    loGraphic.translate(-((int) width - liStrWidth) / 4, -((int) height - liStrHeight) / 4);
    loGraphic.setFont(font);
    loGraphic.setColor(textColor);
    loGraphic.drawString(text, ((int) width - liStrWidth) / 4, ((int) height - liStrHeight) / 2);
    loGraphic.drawString(text, ((int) width - liStrWidth) / 2, ((int) height - liStrHeight) / 4);
    loGraphic.drawString(text, ((int) width - liStrWidth) / 6, ((int) height - liStrHeight) / 50);
    loGraphic.dispose();
    return img;
}
...全文
9183 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-Java 发布问题, 以便更快地解决您的疑问

13,097

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧