使用Canvas的drawTextOnPath方法实现沿着Path绘制文本
来源:互联网 发布:des算法c语言实现 编辑:程序博客网 时间:2024/05/17 08:10
Android的Canvas提供了一个drawTextOnPath(String text,Path path,float hOffset,float vOffset,Paint paint)方法,该方法可以沿着Path路径绘制文本,其中text指文本内容,hOffset参数指定水平偏移、vOffset指定垂直偏移,下面用一个简单实例来演示,代码如下:
Activity:package com.lovo.testcanvasactivity;import android.app.Activity;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.graphics.RectF;import android.os.Bundle;import android.view.View;public class TestPathActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(new MyView(this));}class MyView extends View {final String DRAW_STR = "天行健,君子以自强不息";// 画笔private Paint paint;// 声明路径对象数组Path[] paths = new Path[3];public MyView(Context context) {super(context);paths[0] = new Path();paths[0].moveTo(0, 0);for (int i = 0; i <= 7; i++) {// 生成7个点,随机生成Y坐标,并连成一条paths[0].lineTo(i * 30, (float) Math.random() * 30);}paths[1] = new Path();RectF rectF = new RectF(0, 0, 200, 120);paths[1].addOval(rectF, Path.Direction.CCW);paths[2] = new Path();paths[2].addArc(rectF, 60, 180);// 初始化画笔paint = new Paint();paint.setAntiAlias(true);paint.setColor(Color.CYAN);paint.setStrokeWidth(1);}@Overrideprotected void onDraw(Canvas canvas) {// 将背景填充为白色canvas.drawColor(Color.WHITE);canvas.translate(40, 40);// 设置从右边开始绘制(右对齐)paint.setTextAlign(Paint.Align.RIGHT);paint.setTextSize(20);// 绘制路径paint.setStyle(Paint.Style.STROKE);canvas.drawPath(paths[0], paint);// 沿着路径绘制一段文本paint.setStyle(Paint.Style.FILL);canvas.drawTextOnPath(DRAW_STR, paths[0], -8, 20, paint);// 画布下移120canvas.translate(0, 120);// 绘制路径paint.setStyle(Paint.Style.STROKE);canvas.drawPath(paths[1], paint);// 沿着路径绘制一段文本paint.setStyle(Paint.Style.FILL);canvas.drawTextOnPath(DRAW_STR, paths[1], -20, 20, paint);// 画布下移120canvas.translate(0, 120);// 绘制路径paint.setStyle(Paint.Style.STROKE);canvas.drawPath(paths[2], paint);// 沿着路径绘制一段文本paint.setStyle(Paint.Style.FILL);canvas.drawTextOnPath(DRAW_STR, paths[2], -10, 20, paint);}}}
附上图片效果:
- 使用Canvas的drawTextOnPath方法实现沿着Path绘制文本
- Path绘制文本canvas.drawTextOnPath
- Android Canvas沿着Path绘制文字
- android 里面Canvas绘制文本的方法
- Android开发:canvas.drawTextOnPath()无效----Android4.03的又一个bug!!!!(关于Canvas绘制的方方面面)
- Android开发:canvas.drawTextOnPath()无效----Android4.03的又一个bug!!!!(关于Canvas绘制的方方面面) .
- Canvas的drawTextOnPath参数含义
- canvas的cliprect以及drawTextOnPath,Region.OP
- Canvas中绘制文本的FontMetrics
- Canvas文本绘制的浏览器差异
- html5-canvas的绘制文本自动换行
- 【实例】html5-canvas中实现绘制虚线的方法
- Canvas:绘制文本
- C++ Builder 使用Canvas的方法来绘制图形对象
- canvas使用drawImage()方法绘制img和video的区别
- Android 使用Canvas中的drawBitmap方法绘制拉伸的图片
- Android-使用OpengGL实现的Canvas进行绘制(简单介绍)
- 绘制Canvas的使用二
- Leetcode: Unique Binary Search Tree II
- selenium IDE(http://www.verydemo.com/demo_c128_i46046.html)
- Complete Checklist for Manual Upgrades to Oracle Database 12c Release 1 (12.1) [ID 1503653.1]
- 关于java.nio.ByteBuffer的一些杂七杂八。
- 02-VMware9上面安装Ubuntu 12.10
- 使用Canvas的drawTextOnPath方法实现沿着Path绘制文本
- 如何在一台主机上安装多个版本oracle 数据库?
- Vc++ new delete 线程非安全性
- scott用户sql操作
- windows安装PHP5.4+Apache2.4+Mysql5.5
- Could not open ServletContext resource [/WEB-INF/applicationContext.xml]解决方法
- 两个版本的oracle,装在一台主机上
- Sublime text 3如何安装package control办法
- Leetcode: Interleaving String