Paint绘制文字

//获得字符行间距
//      mPaint.getFontSpacing();
        //获得字符之间的间距
//      mPaint.getLetterSpacing();
//      mPaint.setLetterSpacing(letterSpacing)//设置
        //设置文本删除线
//      mPaint.setStrikeThruText(true);
        //是否设置下划线
//      mPaint.setUnderlineText(true);
        //设置文本大小
//      mPaint.setTextSize(textSize);
//      mPaint.getTextSize();
//      mPaint.setTypeface(Typeface.BOLD);//设置字体类型
//      Typeface.ITALIC
//      Typeface.create(familyName, style)//加载自定义字体
        //文字倾斜 默认0,官方推荐的-0.25f是斜体
//      mPaint.setTextSkewX(-0.25f);
        //文本对齐方式
//      mPaint.setTextAlign(Align.LEFT);
//      mPaint.setTextAlign(Align.CENTER);
//      mPaint.setTextAlign(Align.RIGHT);
        //计算制定长度的字符串(字符长度、字符个数、显示的时候真实的长度)
//      int breadText = mPaint.breakText(text, measureForwards, maxWidth, measuredWidth)

        mPaint.setTextSize(50);
//      float[] measuredWidth = new float[1];
//      int breakText = mPaint.breakText(str, true, 200, measuredWidth);
//      Log.i("RICKY", "breakText="+breakText+", str.length()="+str.length()+", measredWidth:"+measuredWidth[0]);

        // Rect bounds获取文本的矩形区域(宽高)
//      mPaint.getTextBounds(text, index, count, bounds)
//      mPaint.getTextBounds(text, start, end, bounds)

        //获取文本的宽度,和上面类似,但是是一个比较粗略的结果
        float measureText = mPaint.measureText(str);
        //获取文本的宽度,和上面类似,但是是比较精准的。
        float[] measuredWidth = new float[10];

        //measuredWidth得到每一个字符的宽度;textWidths字符数
        int textWidths = mPaint.getTextWidths(str, measuredWidth);
//      mPaint.getTextWidths(text, start, end, widths)
        Log.i("RICKY", "measureText:"+measureText+", textWidths:"+textWidths);

        **基线的问题**

        FontMetrics fontMetrics = mPaint.getFontMetrics();
        FontMetrics fontMetricsInt = mPaint.getFontMetricsInt();  // 和上面是一样的,只不过返回的是int值
        fontMetrics.top;
        fontMetrics.ascent;
        fontMetrics.descent;
        fontMetrics.bottom;
        所有的四个值都是以基线baseLine为基准来计算的。baseline以上的就是负的;以下的是正的。

        在做自定义控件的时候canvas.drawText(x,y) 这个y并不是text的左上角,而是以baseline为基准的。

        1)实例:指定左上角的顶点坐标 绘制文本
        公式: float baselineY = Y - fontMetrics.top;


        2)实例:指定中间位置,绘制文本
        公式: float baselineY = centerY + (fontMetrics.bottom-fontMetrics.top)/2 - fontMetrics.bottom

http://blog.csdn.net/eyishion/article/details/51824520

http://blog.csdn.net/su1216/article/details/46900617

渲染

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值