drawBitmapMesh(Bitmap bitmap,
int meshWidth,
int meshHeight,
float[] verts,
int vertOffset,
int[] colors,int colorffset,Paint paint)
这个方法可以对bitmap进行扭曲,部分参数说明如下:
- bitmap 需要扭曲的源位图
- meshWidth 控制在横向上把该源位图划成成多少格
- meshHeight 控制在纵向上把该源位图划成成多少格
- verts 长度为(meshWidth + 1) * (meshHeight + 1) * 2的数组,它记录了扭曲后的位图各顶点位置
- vertOffset 控制verts数组中从第几个数组元素开始才对bitmap进行扭曲
3. drawBitmapMesh简单示例
- 根据参数的含义,我们先初始化这些参数:
//将图像分成多少格
private int carBodyWidthPart = 4;
private int carBodyHeightPart = 4;
//交点坐标的个数
private int carBodyPartCount = (carBodyWidthPart + 1) * (carBodyHeightPart + 1);
//用于保存COUNT的坐标
//x0, y0, x1, y1…
private float[] carBodyNewsPos = new float[carBodyPartCount * 2];
private float[] carBodyOrigPos = new float[carBodyPartCount * 2];
/**
- 得到网格点集合
- @param bitmap bitmap
- @param heightPart 纵向分割的份数
- @param widthPart 横向分割的份数
- @param newPos 新点集合
- @param origPos 原始点集合
*/
protected void getBitmapMeshPoints(Bitmap bitmap, int heightPart, int widthPart, float[] newPos, float[] origPos) {
//初始化网格点
int index = 0;
float bmWidth = bitmap.getWidth();
float bmHei