canvas.drawBitmap()的三个最常用的调用方法, 以及Matrix类的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了canvas.drawBitmap()的三个最常用的调用方法, 以及Matrix类的使用相关的知识,希望对你有一定的参考价值。

参考技术A <1> drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)
一般给src 设置为null即可, 把bitmap画到指定的矩形空间内.

<2> drawBitmap(Bitmap bitmap, float left, float top, Paint paint)
把bitmap显示到left, top所指定的左上角位置.

<3> drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)
使用一个Matrix参数, 用matrix对象来指定图片要显示的位置, 以及要采用什么具体的形变.

eg.

Matrix 类是用来实现对图像产生形变, 实现原理是基于: 图片在内存中存放的就是一个一个的像素点,而对于图片的变换主要是处理图片的每个像素点,对每个像素点进行相应的变换,即可完成对图像的变换。
在上面的例子中, 使用了postTranslate(), postRotate()这样的post () 系列方法, 还用了setScale()这类的set ()系列方法, 例如setTranslate(float dx,float dy).
set ()和post ()的区别是:
set ()相当于对matrix对象先重置reset(), 再施加形变操作.
post ()相当于在已有的matrix对象的基础上, 再添加一个新的形变操作.
还有一类是pre ()方法, 相当于在已有的matrix对象的基础上, 在之前添加一个新的形变操作, 在实际开发中, 用pre ()这类方法的地方并不多.

refer to:
http://www.cnblogs.com/plokmju/p/android_Matrix.html
http://longshuai2007.blog.163.com/blog/static/14209441420117521823875/

---DONE.---

一个自定义View中canvas画图的问题

我写了个类继承了View ,在onDraw()方法中绘制了背景,而 现在需要接受用户的触摸事件,在自定义的类中另外写了一个方法,在触摸的位置画一个Bitmap,如果要调用canvas.drawBitmap()的话,要有canvas对象,有没有什么办法拿到canvas对象或者其他的方法可以画图的,小弟新手 求赐教

Canvas对象的获取方式有两种:一种我们通过重写View.onDraw方法,View中的Canvas对象会被当做参数传递过来另一种就是当你想创建一个Canvas对象时使用的方法:Bitmap bitmap = Bitmap.createBitmap(宽,高, Bitmap.Config);Canvas c = new Canvas(bitmap); 参考技术A 用surfaceview可以在surfaceviewchanged里面可以进行绘制,可以根据activity里面的监听事件具体修改它 canvas在surfacevie的方法里new出就可以 参考技术B 你可以试下SurfaceView 你的点击处理事件仍然可以 在activity中处理Canvas对象可以直接new的 参考技术C 你传过去就行了啊?在另外一个类的初始化的时候,或者是调用方法的时候

以上是关于canvas.drawBitmap()的三个最常用的调用方法, 以及Matrix类的使用的主要内容,如果未能解决你的问题,请参考以下文章

自定义控件练习:drawBitmap显示长图

android中,如何用canvas绘制透明?

自定义组件之绘制图片

一个自定义View中canvas画图的问题

Android面试收集录 2D绘图与动画技术

Android绘图基础--Canvas和Drawable