Android绘图:自定义View——路径(Path)、贝塞尔曲线(绘制可动的波浪线)、Bitmap

更多贝塞尔曲线细节可参照:http://blog.csdn.net/flash129/article/details/8234599

Path的介绍

Path就像它的原本的意思一样是路径的意思,它可以根据设置点来绘制各种图形。

Path的初始化也是用new完成的。一般在第二个构造器中。
Path的对象用path.moveTo(100,100);设置起始位置, 即我们下笔的位置path.lineTo(0,200);设置下一个位置。当需要一个闭合图形时最后调用
path.close();//收尾连接.
在path中还定义了一些特殊的图形,例如圆。与canvas直接调用方法画圆的方法有些不同,这里还指出了方向Path.Direction.CCW表示逆时针,Path.Direction.CW表示顺时针。

BitMap的用法

BitMap就是将某个图像写到自定义的View中并可以对其进行包括平移,旋转缩放等操作。
BitMap的初始化:
mbitMap= BitmapFactory.decodeResource(getResources(), R.mipmap.aa);//对BitMap初始化。R.mipmap.aa就是我们进行写入的图片。

可以通过调用bitwidth=mbitMap.getWidth();
bitheigt=mbitMap.getHeight();获得图片的宽度和高度。
在 onDraw()中调用 canvas.drawBitmap(bitmap,0,0,mpaint);就可以将图片画到画布上。(0,0)是图片开始的位置。

Matrix(矩阵)的功能

可以通过Matrix的值的设置对图片进行平移,旋转,缩放等操作。
Matrix的初始化为: private Matrix matrix=new Matrix ();
matrix.reset();为将matrix中的数据清空,恢复为默认值。

PorterDuffXfermode是用来干啥的呢?

它是设置paint的画图模式的。
当我们不是根据现有的图片在画布上进行BiMap绘制的时候,想自己画一些集合图形的时候,就必须在BitMap上再创建一个Canvas,在这个Canvas上进行绘制,最后再调用原有的Canvas进行绘制。

用法

1、建立PorterDuffXfermode的对象,并设置相应的mode。
PorterDuffXfermode mode = new PorterDuffXfermode(PorterDuff.Mode.XOR);

2、当建立了mode,就要设置到相应的画笔上:

代码如下:

PorterDuffXfermode mode=new PorterDuffXfermode(PorterDuff.Mode.DST_OUT);
mPaintRect.setXfermode(mode);

3、既然是自定义的bitmap就一定要设置其宽度和高度。一般在onMeasure方法中设置,因为我们可能要用到View的宽和高。只有运行到onMeasure才能获得View的宽和高。
mBitmap=Bitmap.createBitmap(mWidth,mHeight,Bitmap.Config.ARGB_8888);

4、新建一个Canvas,并将其设置为BitMap的。在onMeasure中代码如下:
private Canvas canvasBit;

 canvasBit=new Canvas(mBitmap);

5、效果图
这里写图片描述
相应的mode对应的效果图如下:

这里写图片描述

画可动的波浪线

public class MyPathView extends View {
   
    private Paint mPaint;
    private Paint mPaintPoint;
    private int mWidth;
    private int mHeight;
    private Path mPath;
    private static 
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值