视频:善知堂Android http://www.verycd.com/topics/2915940/
今天加班 10点多才到家
第三集 绘图2
1.绘不同的图形。
class GameView extends View { private Paint paint = null; public GameView(Context context) { super(context); paint = new Paint();//画笔 } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); paint.setColor(Color.RED); paint.setStrokeWidth(5);// 画笔粗 canvas.drawLine(0, 0, 100, 111, paint);// 画一条线 Path path = new Path(); // 画自定义图形,多边形。。 path.moveTo(110, 110); path.lineTo(300, 100); path.lineTo(180, 400); path.close(); //完成图形,回起点。 canvas.drawPath(path, paint); //可以不画出来 canvas.drawText("helloworld", 100, 50, paint); // 沿着路径画字符串 canvas.drawTextOnPath("11111111111111112dsfdsfdsfsdfsdfsfsdf11111111111111112dsfdsfdsfsdfsdfsfsdf11111112", path, 0, 0, paint); } }
这是结果,数字会围绕着图形。字符串长度超过图形的话,后面自动被截断。
2.使用图片
使用Bitmap (位图)
this.getResources() 获得资源目录。可以获得string,layout,drawable。
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Bitmap bitmap = ((BitmapDrawable) this.getResources().getDrawable( R.drawable.ic_launcher)).getBitmap();// 位图 // 第二种取图片的方法 Bitmap bitmap2 = BitmapFactory.decodeResource(this.getResources(), R.drawable.ic_launcher); canvas.drawBitmap(bitmap, 0, 0, null); //src 是图片中取出部分,dst是将这部分画的位置 Rect src =new Rect(24,24,49,49); Rect dst =new Rect(200,200,225,225); canvas.drawBitmap(bitmap2, src, dst, null); }
这个画图片中的一部分功能会非常使用,还有旋转,按比例放大,缩小,拉伸,倾斜等的功能。
matrix中set 是设置特效,使用post可以叠加特效 平移,倾斜,旋转,大小。pre是之前执行特效。
默认围绕一个中心点来进行,不指定的情况下围绕0,0为中心点
第三天晚 完