Canvas提供了一个drawBitmapMesh(bitmap, meshWidth, meshHeight, verts, vertOffset, colors, colorOffset, paint)方法,该方法可以对Bitmap进行扭曲,实现“水波荡漾”、“风吹旗帜”等各种扭曲效果。

drawBitmapMesh方法的关键参数说明:

bitmap:指定需要扭曲的源位图。

meshWidth:该参数控制在横向上把该源位图划分成多少格。

meshHeight:该参数控制在纵向上把该源位图划分成多少格。

verts: 该参数是一个长度为(meshWidth+1)*(meshHeight+1)*2的数组,它记录了扭曲后的位图各“顶点”位置,虽然它是个一位在数组,它实际上记录的数据是形如(x0,y0)、(x1,y)、(x2,y)......(xN,yN)格式的数据,这些数组元素控制对Bitmap位图的扭曲效果。

vertOffset: 控制verts数组中从第几个数组元素开始才对Bitmap进行扭曲(忽略vertOffset之前数据的扭曲效果).

使用drawBitmapMesh扭曲图像的更多相关文章

  1. Android drawBitmapMesh扭曲图像

    今天介绍一下在Android当中怎么扭曲图像,在Android系统中的Canvas提供了一个drawBitmapMesh(Bitmap bitmap, int meshWidth, int meshH ...

  2. 疯狂Android讲义 - 学习笔记(六)

    第7章 7.1 使用简单图片 7.1.1 使用Drawable对象 7.1.2 Bitmap和BitmapFactory 7.2 绘图 7.2.1 Android绘图基础:Canvas.Paint等 ...

  3. Android开发学习清单

    目录: 第1章 Android应用与开发环境1.1 Android的发展和历史1.1.1 Android的发展和简介1.1.2 Android平台架构及特性1.2 搭建Android开发环境1.2.1 ...

  4. 【C#】图像的变形/变换/扭曲。用Emgu或YLScsFreeTransform(FreeImageTransformation)或MagickImage

    需求:将图像变形,如矩形图片变换成梯形的,图素拉伸. 解决方案:目前找到有两种. 使用EmguCV,它是.Net版的OpenCV.推荐直接在VS里的Nuget中搜索EmguCV进行下载. 使用第三方库 ...

  5. Caffe2 图像预处理(Image Pre-Processing)[6]

    学习如何使得图像符合预训练模型的需求,或者用其他数据集的图像来测试自己的模型. - 调整大小 - 缩放 - HWC和CHW,数据通道交换 - RGB和BGR,颜色通道的交换 - Caffe2的图像预处 ...

  6. 从单一图像中提取文档图像:ICCV2019论文解读

    从单一图像中提取文档图像:ICCV2019论文解读 DewarpNet: Single-Image Document Unwarping With Stacked 3D and 2D Regressi ...

  7. 转载——CSS3 Object-fit和Object-position

    在响应式设计(RWD)中,令大家最头痛的问题的是图片的自适应处理问题.往往我采取的处理方式是给图片的容器设置一个尺寸,然后给图片设置下面的代码: img { max-width: 100%; heig ...

  8. halcon算子

    halcon的算子列表   Chapter 1 :Classification 1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样 ...

  9. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数006, image,影像处理(像素图)

    <zw版·Halcon-delphi系列原创教程> Halcon分类函数006, image,影像处理(像素图) 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“* ...

随机推荐

  1. 如何在本机上将localhost改为www.dev.com

    windows上安装好服务器后,打开本地目录 C:\Windows\System32\drivers\etc\ ,会看到有个hosts文件,打开后里面的代码为: # Copyright (c) - M ...

  2. JS trim()方法使用

    JS trim()方法使用上有浏览器限制: 1.直接使用 string.trim() 浏览器版本限制:JavaScript Version 1.8  2.间接使用<即自己使用正则构造类trim的 ...

  3. [转载] Python的GIL是什么鬼,多线程性能究竟如何

    原文: http://cenalulu.github.io/python/gil-in-python/ GIL是什么 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器( ...

  4. (一)使用springAPI以及自定义类 实现AOP-aop编程

    Spring的另一个重要思想是AOP,面向切面的编程,它提供了一种机制,可以在执行业务前后执行另外的代码,Servlet中的Filter就是一种AOP思想的体现,下面通过一个例子来感受一下. 假设我们 ...

  5. [css] line-height

    原文:http://www.zhangxinxu.com/wordpress/2009/11/css%E8%A1%8C%E9%AB%98line-height%E7%9A%84%E4%B8%80%E4 ...

  6. laravel 开启sql查询日志

    \DB::enableQueryLog(); dd(\DB::getQueryLog());

  7. Eclipse上安装springsource-tool-suite(zhuan)

    http://jingyan.baidu.com/article/1612d5005fd087e20f1eee10.html *********************************** s ...

  8. OpenGL的视图变换、模型变换、投影变换、视口变换

    产生目标场景的过程类似于用照相机进行拍照: (1) 把照相机固定在三角架上,并让他对准场景从不同位置观察场景(视图变换) gluLookAt (2) 对场景进行安排,使各个物体在照片中的位置是我们所希 ...

  9. Scroller 实现的弹性回弹的LinearLayout

    由于公司业务发展,多app需求很少,被调到java后台开发接口三个月了,还要我继续做 java,最近有点想换工作,不得不重新看看基础知识了. 晚上看到了滑动的实现方式,平滑滑package com.e ...

  10. PRIMARY LANGUAGE ID not a number

    用vs2010修改别人的源代码(估计是vc6下的)  .RC 文件,报错:  1>.RC(8): error RC2144: PRIMARY LANGUAGE ID not a number 1 ...