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画图的相关知识点,帮助你理解和掌握其核心功能。 1. **Canvas的基本概念** - Canvas是Android系统提供的一个类,它提供了在二维画布上进行绘制的方法。 - 通常,我们会在一个...
总之,Canvas是Android开发中不可或缺的一部分,它提供了丰富的绘图接口,使得开发者能够在应用中实现各种自定义的图形和动画效果。通过深入学习和实践Canvas的使用,可以提升Android应用的视觉表现力和用户体验。
在Android应用开发中,Canvas是绘制图形的核心组件,它提供了在Bitmap或者其他图形表面进行绘图的方法。本项目源码深入探讨了如何利用Canvas在Android应用中实现画布操作,非常适合毕业设计或移动开发App的学习者...
canvas.clipRect(left, top, right, bottom); ``` - **左** (`left`):裁剪区域的左边界。 - **顶** (`top`):裁剪区域的顶部边界。 - **右** (`right`):裁剪区域的右边界。 - **底** (`bottom`):裁剪区域的底部...
3. 设置裁剪区域:使用`canvas.clipRect(10, 10, 280, 260)`设置裁剪区域,限制绘制的矩形在指定的区域内。 4. 旋转画布:使用`canvas.rotate(45.0f)`旋转画布,以便绘制的矩形能够旋转。 5. 绘制矩形:使用`canvas....
通过`canvas.rotate()`方法,我们可以让画布或画布上的某个元素旋转。在翻页动画中,关键在于让切割线(对折线)沿着中心点旋转,同时保持图像的其他部分相对静止。 5. **保存和恢复Canvas状态**: 使用`canvas....
在Android开发中,Canvas是用于在Bitmap上进行图形绘制的核心工具,它提供了丰富的API来实现各种复杂的图形绘制和图像处理。这个项目通过六个具体的demo,详细地演示了如何使用Canvas进行画布的平移、旋转、缩放、...
例如,clipRect(new Rect()) 将裁剪出一个矩形区域,该区域就是 canvas 对象的当前画图区域。 getXxx 方法族 getXxx 方法族用于获取与 Canvas 相关的一些值,如宽高、屏幕密度等。 save()、restore()、saveLayer...
在Android游戏开发中,Canvas是核心的绘图组件,它允许开发者在屏幕上绘制各种图形、文字、位图等。Canvas可以理解为一个虚拟的画布,开发者可以通过它提供的各种方法来绘制并操纵图像。以下是对Canvas及其常用方法...
4. **图片剪切**:图片剪切通常涉及Bitmap的crop()方法或者使用Canvas的clipRect()配合drawBitmap()来实现。用户可以选择特定区域进行剪切,生成新的Bitmap。 5. **图片存储**:在Android中,图片的保存一般涉及到...