zoukankan      html  css  js  c++  java
  • java 画图 Graphics 文字自动换行

        /**
         * 文字超出限定长度自动换行
         *
         * @param g           画布
         * @param font        字体样式
         * @param text        文字
         * @param widthLength 最大长度  (多少长度后需要换行)
         * @param x           文字位置坐标  x
         * @param y           文字位置坐标 Y
         * @param yn          每次换行偏移多少pt
         */
        private void drawString(Graphics2D g, Font font, String text, int widthLength, int x, int y, int yn) {
    
            FontMetrics fg = g.getFontMetrics(font);
            List<String> ls = new ArrayList<>(2);
            getListText(fg, text, widthLength, ls);
            for (int i = 0; i < ls.size(); i++) {
                if (i == 0) {
                    g.drawString(ls.get(i), (int) UnitConv.mm2pt(x), (int) UnitConv.mm2pt(y));
                } else {
                    g.drawString(ls.get(i), (int) UnitConv.mm2pt(x), (int) UnitConv.mm2pt(y + yn));
                }
            }
        }
    
    
        /**
         * 递归 切割字符串
         * @param fg
         * @param text
         * @param widthLength
         * @param ls
         */
        private void getListText(FontMetrics fg, String text, int widthLength, List<String> ls) {
            String ba = text;
            boolean b = true;
            int i = 1;
            while (b) {
                if (fg.stringWidth(text) > widthLength) {
                    text = text.substring(0, text.length() - 1);
                    i++;
                } else {
                    b = false;
                }
            }
            if (i != 1) {
                ls.add(ba.substring(0, ba.length() - i));
                getListText(fg, ba.substring(ba.length() - i), widthLength, ls);
            } else {
                ls.add(text);
            }
        }

    画图中需要填写文字,而文字大小不固定的时候就会超出画布,显示不了文字,就需要自动换行。

  • 相关阅读:
    appium+python 通信原理(下)
    appium+python 通信原理(上)
    百度地图自己添加 标识地点 代码
    让织梦CMS的后台编辑器支持优酷视频
    织梦dede标签tags的美化教程
    ECharts 是一款开源
    dede 留言板访问的目录
    数据库简单的查询
    DEDE在下载文件时会生成table
    JS移动客户端--触屏滑动事件
  • 原文地址:https://www.cnblogs.com/atliwen/p/11864412.html
Copyright © 2011-2022 走看看