首页 > 其他分享 >Graphics2D二维码绘制自动换行文本方法

Graphics2D二维码绘制自动换行文本方法

时间:2024-03-05 15:11:39浏览次数:23  
标签:Graphics2D width 换行 lines param int 二维码 lineHeight maxLine

/**
     * 绘制自动换行文本(默认最大3行,代码中的数字都是调试好的,不可轻举妄动!!)
     *
     * @param g          {@link Graphics2D}
     * @param str        文本
     * @param y          坐标Y
     * @param width      文字区域总宽度
     * @param lineHeight 每行高度(为空时取字号大小)
     */
    public static Integer drawWrapString(Graphics2D g, String str, int y, int width, Integer lineHeight) {
        Font font = g.getFont();
        FontMetrics fontMetrics = new JLabel(str).getFontMetrics(font);
        if (lineHeight == null) {
            lineHeight = font.getSize();
        }
        char[] chars = str.toCharArray();
        List<StringBuilder> lines = new ArrayList<>();
        int s = 0;
        StringBuilder p = null;
        for (char c : chars) {
            int cWidth = fontMetrics.stringWidth(c + "");
            if (p == null || s + cWidth >= width) {
                p = new StringBuilder();
                lines.add(p);
                s = cWidth;
            } else {
                s += cWidth;
            }
            p.append(c);
        }
        Integer maxLine = lines.size();
        for (int i = 0; i < maxLine; i++) {
            int x1 = (width - g.getFontMetrics().stringWidth(lines.get(i).toString())/2);
            g.drawString(lines.get(i).toString(), x1, y + ((4 - maxLine + i) * (lineHeight)));
        }
        return maxLine;
    }

研究了好长时间,记下来,方便后来人

标签:Graphics2D,width,换行,lines,param,int,二维码,lineHeight,maxLine
From: https://www.cnblogs.com/kaka945/p/18054097

相关文章

  • Graphics2D的属性有哪些,分别实现什么功能?
    Graphics2D对象有6种属性,包括paint、stroke、font、transform、clip和composite。(1)paint—该属性确定所绘制线条的颜色,以及填充图形的颜色和图案等。(2)stroke—该属性可以确定线条的类型以及粗细,还有线段端点的形状。(3)font—该属性可以确定所显示字符串的字体。(4)......
  • Graphics2D.drawRenderedImage
    importjava.awt.Graphics2D;//导入方法依赖的package包/类publicstaticvoidrenderTest(Graphics2Dg2d,intw,inth){g2d.setColor(Color.yellow);g2d.fillRect(0,0,w,h);BufferedImageimage=getTestImage();//draworiginalimageg2d......
  • php 生成小程序二维码
    publicfunctiongenerate($code,$isShow){//构建二维码参数$scene='C='.$code.'&path=green';$params=["scene"=>$scene,'page'=>'pages/log......
  • js调用斑马打印机打印二维码
    斑马打印机打印二维码项目(Web项目)功能中存在生成并打印二维码的功能,需要借助打印机打印出二维码。由于业务需求二维码需要打印在不干胶的材料上并可以进行粘贴,所以借助斑马打印机通过热敏不干胶纸进行打印。需要结合所使用的的斑马打印机的型号,去官网下载相关的浏览器打印插件。(......
  • 二维码的背后故事:为用户带来的便捷与安全
    一、二维码的起源二维码是一种将信息编码成二维图案的技术。它的起源可以追溯到上世纪90年代初,当时条形码已经被广泛应用于商业领域。然而,条形码的局限性和不足促使人们寻找一种更高效、更灵活的信息编码方式,于是二维码应运而生。二维码生成器|一个覆盖广泛主题工具的高效......
  • Java中使用Graphics2D实现图片添加文字/图片水印
    场景java实现给图片添加水印实现步骤:获取原图片对象信息(本地图片或网络图片)添加水印(设置水印颜色、字体、坐标等)处理输出目标图片。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现1、新建工具类 importorg.apache.commons.lang3.StringUtils;importjavax.im......
  • vue3 使用 html5-qrcode 实现扫描二维码功能
    1.安装npm安装npminstall--save-devhtml5-qrcode或直接引入<scriptsrc="https://unpkg.com/html5-qrcode"type="text/javascript">2.引入根据需求自定义渲染QRscanningUI的容器。<divid="reader"width="600px"></div&......
  • stm32单片机扫码设计方案,ESP32蓝牙无线扫码器设计项目硬件套件的实现,一维码二维码识别
    stm32/ESP32(或ESP32C3,ESP32S3)/ESP8266单片机扫码识别设计方案二维码一维码扫描模块开发项目资料程序,轻松实现蓝牙扫码器WiFi无线串口,二维码识别显示器串口输出条码扫描枪扫码枪开发项目套件设计,很适合DIY无需焊接,到手即可开发调试。ESP32,ESP8266等基于arduino库实现,stm32基于......
  • Pandas一行中满10个字符就自动换行?
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas处理数据的问题。问题如下:大佬们,有个需求,某一列中,有些单元格中数字太多,比如有20个字符,太难看了,有没有办法,满10个字符就自动换行!用了这个:str.wrap(10),但实际效果显示不出来。二......
  • 小程序已支持长按识别二维码
    查阅了很多文章,大多还停留在页面嵌入webview识别二维码的时代。下面我发表一下小程序支持长按识别二维码的方法只需要在image标签里添加如下属性-- show-menu-by-longpress小程序版本  show-menu-by-longpress="{{true}}"//show-menu-by-longpress="{{true}}"<image......