Paint绘制文字

来源:互联网 发布:flow水刀软件 编辑:程序博客网 时间:2024/05/29 11:39
//获得字符行间距//      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

渲染