首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Canvas中clipRect,rotate运用

2012-09-27 
Canvas中clipRect,rotate应用Canvas.rotate与clipRect的应用其功能是将画布进行旋转,达到画布上的图像成旋

Canvas中clipRect,rotate应用

Canvas.rotate与clipRect的应用

其功能是将画布进行旋转,达到画布上的图像成旋转的效果。

1.利用clipRect功能是建立一个裁剪区,

2.保存canvas状态

3.将该裁剪区进行旋转

4.进行画布上的操作(必须在3之后)

5.恢复canvas状态

?

注意:在做显示的Canvas中进行裁剪时,你的显示区域将是你的裁剪区域

?

效果图:

Canvas中clipRect,rotate运用

?

?

?

?

public class ClipRotateView extends View implements Runnable {Paint paint;float rote = 0f;public ClipRotateView(Context context) {super(context);paint = new Paint();paint.setAntiAlias(true);new Thread(this).start();}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);if (canvas == null)canvas = new Canvas();canvas.drawColor(Color.DKGRAY);paint.setColor(Color.RED);// 建立裁剪区域,该处决定了可以显示的内容,// 当处理图片时,可以只裁剪部分区域,这里是为了把当前画布的的内容都显示出来// 所以裁剪全部canvas.clipRect(0, 0, getWidth(), getHeight());// 操作之前进行画布状态的保存canvas.save();//旋转画面,必须放在画矩形之前// canvas.rotate(rote),则是绕(0,0)旋转canvas.rotate(rote, 100, 100);//画矩形canvas.drawRect(100, 100, 200, 150, paint);// 操作完成之后进行恢复canvas.restore();//画另外两个图形paint.setColor(Color.BLUE);canvas.drawRect(180,100, 280,150, paint);paint.setColor(Color.GREEN);Path path = new Path();path.moveTo(100, 280);path.lineTo(100 + 50, 280);path.lineTo(100 + 30, 280 + 50);path.lineTo(100 + 20, 280 + 50);path.close();canvas.drawPath(path, paint);}// 进行360度的旋转@Overridepublic void run() {while (!Thread.currentThread().isInterrupted()) {try {if (rote > 360) {rote = 0;} else {rote += 5;}Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}postInvalidate();}}}

热点排行