`
yq135314
  • 浏览: 256009 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Canvas中clipRect,rotate应用

 
阅读更多

Canvas.rotate与clipRect的应用

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

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

2. 保存canvas状态

3. 将该裁剪区进行旋转

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

5. 恢复canvas状态

 

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

 

效果图:

 

 

 

 

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();
	}

	@Override
	protected 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度的旋转
	@Override
	public void run() {
		while (!Thread.currentThread().isInterrupted()) {
			try {
				if (rote > 360) {
					rote = 0;
				} else {
					rote += 5;
				}
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			postInvalidate();
		}
	}

}
分享到:
评论

相关推荐

    Android下使用Canvas画图

    本文将深入探讨Android中Canvas画图的相关知识点,帮助你理解和掌握其核心功能。 1. **Canvas的基本概念** - Canvas是Android系统提供的一个类,它提供了在二维画布上进行绘制的方法。 - 通常,我们会在一个...

    安卓Android源码——(Canvas画布).rar

    总之,Canvas是Android开发中不可或缺的一部分,它提供了丰富的绘图接口,使得开发者能够在应用中实现各种自定义的图形和动画效果。通过深入学习和实践Canvas的使用,可以提升Android应用的视觉表现力和用户体验。

    Android应用源码之(Canvas画布)(-IT计算机-毕业设计.zip

    在Android应用开发中,Canvas是绘制图形的核心组件,它提供了在Bitmap或者其他图形表面进行绘图的方法。本项目源码深入探讨了如何利用Canvas在Android应用中实现画布操作,非常适合毕业设计或移动开发App的学习者...

    android自定义view

    canvas.clipRect(left, top, right, bottom); ``` - **左** (`left`):裁剪区域的左边界。 - **顶** (`top`):裁剪区域的顶部边界。 - **右** (`right`):裁剪区域的右边界。 - **底** (`bottom`):裁剪区域的底部...

    drawRect的解释

    3. 设置裁剪区域:使用`canvas.clipRect(10, 10, 280, 260)`设置裁剪区域,限制绘制的矩形在指定的区域内。 4. 旋转画布:使用`canvas.rotate(45.0f)`旋转画布,以便绘制的矩形能够旋转。 5. 绘制矩形:使用`canvas....

    Android仿Flipboard动画效果的实现代码

    通过`canvas.rotate()`方法,我们可以让画布或画布上的某个元素旋转。在翻页动画中,关键在于让切割线(对折线)沿着中心点旋转,同时保持图像的其他部分相对静止。 5. **保存和恢复Canvas状态**: 使用`canvas....

    CanvasViewDemo

    在Android开发中,Canvas是用于在Bitmap上进行图形绘制的核心工具,它提供了丰富的API来实现各种复杂的图形绘制和图像处理。这个项目通过六个具体的demo,详细地演示了如何使用Canvas进行画布的平移、旋转、缩放、...

    Android Canvas方法总结最全面详解API(小结)

    例如,clipRect(new Rect()) 将裁剪出一个矩形区域,该区域就是 canvas 对象的当前画图区域。 getXxx 方法族 getXxx 方法族用于获取与 Canvas 相关的一些值,如宽高、屏幕密度等。 save()、restore()、saveLayer...

    Android 游戏开发之Canvas画布的介绍及方法

    在Android游戏开发中,Canvas是核心的绘图组件,它允许开发者在屏幕上绘制各种图形、文字、位图等。Canvas可以理解为一个虚拟的画布,开发者可以通过它提供的各种方法来绘制并操纵图像。以下是对Canvas及其常用方法...

    安卓头像制作图片圆角剪裁相关-Android图片的旋转缩放剪切存储.rar

    4. **图片剪切**:图片剪切通常涉及Bitmap的crop()方法或者使用Canvas的clipRect()配合drawBitmap()来实现。用户可以选择特定区域进行剪切,生成新的Bitmap。 5. **图片存储**:在Android中,图片的保存一般涉及到...

Global site tag (gtag.js) - Google Analytics