一种实现水波纹特效的方法和装置的制作方法

文档序号:6601519阅读:291来源:国知局
专利名称:一种实现水波纹特效的方法和装置的制作方法
技术领域
本发明涉及消费类电子产品的视觉特效技术,尤其涉及一种实现水波纹特效的方 法和装置。
背景技术
进入第三代移动通信技术(3G)时代,消费类电子产品越来越注重用户的体验。那 些能给用户带来好的视觉感受的产品,比如苹果公司的iphone手机,往往能占据很大的市 场。然而,移动终端等小型消费类电子产品受制于价格、产品体积等因素,其硬件的运算和 处理能力是不能与台式机、工作站相比的,这就导致不能使用较大型的图像处理软件来实 现精巧的图像,很难给用户在视觉感受上带来较好的体验。在当前市面上流行的各种移动终端等电子产品中,待机界面或图片浏览界面,基 本上都是静态的,不能和用户产生交互,用户体验效果不佳。

发明内容
有鉴于此,本发明的主要目的在于提供一种实现水波纹特效的方法和装置,实现 界面显示的图片具有水波纹的视觉效果,并能与用户产生交互。为达到上述目的,本发明的技术方案是这样实现的本发明提供的一种实现水波纹特效的方法,该方法包括在界面设定水波纹特效的矩形区域,获取所述矩形区域内的图像作为原图像;设 置原图像所有像素的初始水波高度值及石头的参数;在移动终端的界面上有点击发生时,以被点击的像素位置作为投石点,周期性产 生下一帧驱动消息,在每次下一帧驱动消息产生时,获得下一帧图像各像素的水波高度值 并记录;根据下一帧图像各像素的水波高度值,获取像素偏移量,将原图像各像素按照像 素偏移量重新进行位置排列得到下一帧图像,并显示。上述方案中,所述获取像素偏移量,将原图像各像素按照像素偏移量重新进行位 置排列得到下一帧图像,具体为将每个像素的左右两个像素的水波高度值的差值右移指 定位,作为水平偏移量,上下两个像素的水波高度值的差值右移指定位,作为垂直偏移量, 下一帧图像中,每个像素都由该像素的坐标加上相应的水平偏移量和垂直偏移量后,所对 应的原图像上的像素填充。上述方案中,所述获得下一帧图像各像素的水波高度值并记录具体为在第一次 下一帧驱动消息产生时,根据投石点及设置的石头的大小,在石头覆盖范围内的像素的水 波高度值由初始水波高度值与根据石头重量产生的水波高度值相加得到,其他像素的水波 高度值仍为初始水波高度值,记录各像素的水波高度值;在第一次以后的每次下一帧驱动消息产生时,对于当前帧图像每个位置的像素, 取其周围的多个像素的水波高度值的和,右移指定位后,减去前一帧图像所述位置的像素的水波高度值,将得到的结果作为下一帧图像相应位置像素的水波高度值,并记录下一帧图像各像素的水波高度值。上述方案中,当水波纹正在进行的同时,又有投石点出现时,该方法进一步包括 将当前帧图像各像素的水波高度值作为初始水波高度值,重新从第一次下一帧驱动消息产 生时进行处理。上述方案中,该方法进一步包括设置帧计数器和跳帧条件,根据帧计数器对下一 帧驱动消息的计数值,在满足跳帧条件时,跳过此次的下一帧驱动消息。上述方案中,该方法进一步包括产生水波蔓延的衰减效果,具体为对每次得到 的水波高度值不为0的像素对应的水波高度值都乘以一个小于1的系数。上述方案中,该方法进一步包括产生水波在边沿处弹回的效果,具体为在将原 图像各像素按照像素偏移量重新进行位置排列时,将加上像素偏移量后,超出矩形区域的 坐标映射到矩形区域内,下一帧图像的相应位置的像素由映射到矩形区域内的坐标所对应 的原图像的像素填充。本发明提供的一种实现水波纹特效的装置,该装置包括初始设置模块、投石处理 模块、驱动消息模块、显示模块、存储模块、投石点模块;其中,初始设置模块,用于在界面设定水波纹特效的矩形区域,获取所述矩形区域内的 图像作为原图像;设置原图像所有像素的初始水波高度值及石头的参数;投石点模块,用于获取移动终端界面上被点击的像素位置作为投石点,通知投石 处理模块和驱动消息模块;投石处理模块,用于获得下一帧图像各像素的水波高度值,并通知存储模块;驱动消息模块,用于周期性产生下一帧驱动消息给显示模块;显示模块,用于通知投石处理模块,并根据投石处理模块获得的下一帧图像各像 素的水波高度值,获取像素偏移量,将原图像各像素按照像素偏移量重新进行位置排列得 到下一帧图像;将得到的下一帧图像显示到界面;存储模块,用于记录投石处理模块得到的水波高度值。上述方案中,所述投石处理模块,进一步用于当水波纹正在进行的同时,又收到投 石点模块通知的投石点、且收到显示模块的通知时,将当前帧图像各像素的水波高度值作 为各像素的初始水波高度值,重新从第一次下一帧驱动消息产生时进行处理;和/或,所述投石处理模块,进一步用于产生水波蔓延的衰减效果,具体的对每 次得到的水波高度值不为0的像素对应的水波高度值都乘以一个小于1的系数后,通知存 储模块;和/或,所述显示模块,进一步用于产生水波在边沿处弹回的效果,具体的在将 原图像各像素按照像素偏移量重新进行位置排列时,将加上像素偏移量后,超出矩形区域 的坐标映射到矩形区域内,下一帧图像的相应位置的像素由映射到矩形区域内的坐标所对 应的原图像的像素填充。上述方案中,所述装置进一步包括跳帧模块、帧计数器,其中,跳帧模块,用于设置跳帧条件,并根据帧计数器的计数值,在满足跳帧条件时,通 知显示模块跳过此次的下一帧驱动消息;所述显示模块,进一步用于在获取像素偏移量之前,通知跳帧模块,并在收到跳帧模块通知跳过此次的下一帧驱动消息时,跳过此次的下一帧驱动消息;帧计数器,用于对下一帧驱动消息进行计数,并把计数值通知跳帧模块。本发明提供的一种实现水波纹特效的方法和装置,在界面设定水波纹特效的矩形 区域,获取所述矩形区域内的图像作为原图像;设置原图像所有像素的初始水波高度值及 引起水波纹的石头的参数;在移动终端的界面上有点击发生时,以被点击的像素位置作为 投石点,周期性产生下一帧驱动消息,在每次下一帧驱动消息产生时,获得下一帧图像各像 素的水波高度值并记录;根据下一帧图像各像素的水波高度值,获取像素偏移量,将原图像 按照像素偏移量重新进行像素排列得到下一帧图像,并显示;如此,将每一帧图像在界面上 显示,就会出现水波纹的视觉效果,当界面是触摸屏幕时,图像会根据用户触碰的点产生水 波纹的视觉特效,从而能够与用户产生交互,具有较好的用户体验。



图1为光线在水中发生折射现象的示意图;图2为本发明实现水波纹特效的方法流程的示意图;图3为本发明获取像素XO的水波高度值的示意图;图4为本发明实现水波纹特效的装置结构的示意图。
具体实施例方式光线从水中传播到空气中会发生折射现象,如图1所示,水面下的B点,其光线在 进入A点的人眼时发生了折射,而人还是会直观的认为B点在B’点的位置.当水面并不平 静时,水面上各点的折射率是在时刻变化的,于是我们看到了水面下的B点在其周围一定 范围不断地来回运动,所有的这些来回运动的点组成了一幅错切变化的图像。因此,只需要 将原始的图像各像素点的位置按一些运算方法不断的重新排列,生成水波的中间过程,就 可以模拟现实中的动态水波纹效果。本发明的基本思想是在界面设定水波纹特效的矩形区域,获取所述矩形区域内 的图像作为原图像;设置原图像所有像素的初始水波高度值及引起水波纹的石头的参数; 在移动终端的界面上有点击发生时,以被点击的像素位置作为投石点,周期性产生下一帧 驱动消息,在每次下一帧驱动消息产生时,获得下一帧图像各像素的水波高度值并记录;根 据下一帧图像各像素的水波高度值,获取像素偏移量,将原图像按照像素偏移量重新进行 像素排列得到下一帧图像,并显示;依此类推,每一帧图像都可以通过前两帧图像各像素的 水波高度值得到。下面通过附图及具体实施例对本发明做进一步的详细说明。本发明实现水波纹特效的方法,如图2所示,该方法包括以下几个步骤步骤201 在界面设定水波纹特效的矩形区域,获取所述矩形区域内的图像作为 原图像;例如在界面设定一个宽为w像素、高为h像素的矩形范围作为水波纹特效区域, 矩形区域的左上角在界面的坐标为(left,top),将矩形区域内的所有坐标对应的像素组成 的图像存储到指定位置,作为原图像。步骤202 设置原图像所有像素的初始水波高度值及引起水波纹的石头的参数;
其中,所述初始水波高度值一般设为0,即水面是平静的,若初始水波高度值设定不为0,则会对最终的水波纹产生干涉的效果;所述石头的参数包括石头的形状、大小及重量;其中,所述石头的形状影响产生的水波纹的形状,可以是圆形、方形等;所述石头的大小影响起始产生的水波纹的范围,一般可以选择覆盖1 50个像 素;所述石头的重量影响产生水波纹的振幅大小。步骤203 当有石头投入时,根据投石点在界面的坐标,判断投石点是否在矩形区 域内,如果在,则执行步骤204 ;如果不在,则继续执行本步骤;所述当石头投入时一般是在移动终端的触摸界面上有点击发生时;所述投石点是获取界面上被点击的像素位置作为投石点,为石头的中心;进一步的,还可以根据石头的大小,判断石头是否砸到边界,如果砸到矩形区域的 边界,则通过对投石点坐标的加减运算调整投石点的位置,使石头边缘紧邻矩形区域的边 界。步骤204 周期性产生下一帧驱动消息,在每次下一帧驱动消息产生时,获取并记 录下一帧图像各像素的水波高度值;本步骤中,周期性产生下一帧驱动消息,在第一次下一帧驱动消息产生时,所述获 取并记录下一帧图像各像素的水波高度值,具体的根据投石点及设置的石头的大小,在石 头覆盖范围内的像素的水波高度值由初始水波高度值与根据石头重量产生的水波高度值 相加得到,其他像素的水波高度值仍为初始水波高度值,记录各像素的水波高度值;其中,所述根据石头重量产生的水波高度值可以是直接以石头重量作为水波高度 值,也可以是按照像素到石头中心、即投石点的距离乘以重量或者重量的平方计算得到的 值作为水波高度值;所述右移指定位一般是在1 9位间选择一个进行右移,可以根据实际 效果进行选择;在第一次以后的每次下一帧驱动消息产生时,所述获取并记录下一帧图像各像素 的水波高度值,具体的对于当前帧图像每个位置的像素,取其周围的4个或4个以上像素 的水波高度值的和,右移指定位后,减去前一帧图像所述位置的像素的水波高度值,将得到 的结果作为下一帧图像相应位置像素的水波高度值,并记录下一帧图像各像素的水波高度 值;其中,对于位置在边界上的像素,会有取不全周围像素的水波高度值的情况,所述 位置在边界上的像素的水波高度值可以取原图像上所述位置像素的初始水波高度值;所述右移指定位一般是在1 9位间选择一个进行右移,可以根据实际效果进行 选择;例如,以图3中的像素XO为例,可以取当前帧图像像素X1、X2、X3、X4的水波高度 值的和,然后右移指定位,再减去前一帧图像像素点XO的水波高度值,得到下一帧图像像 素点XO的水波高度值,以此类推,可以得到下一帧图像所有像素点的水波高度值,将得到 的下一帧图像的水波高度值进行记录;其中,上述进行水波高度值求和的像素点还可以包 括 X5、X6、X7、X8,或者 X5、X6、X7、X8、Y0、Yl、Y2、Y3 ;本步骤还可以分配两个指定的位置,分别记录当前帧图像和前一帧图像各像素的水波高度值,当得到下一帧图像各像素的水波高度值时,用下一帧图像各像素的水波高度 值覆盖前一帧图像各像素的水波高度值;这样,将原来的当前帧图像各像素的水波高度值 设置为前一帧图像各像素的水波高度值,刚记录的下一帧图像各像素的水波高度值设置为 当前帧图像各像素的水波高度值;
其中,在没有投石时,两个位置保存的各像素的水波高度值均为0,在得到第一个 下一帧图像各像素的水波高度值时,用得到的水波高度值覆盖任意一个位置的初始水波高 度值;这样,在下一时刻,就会有一个保存的是当前帧图像各像素的水波高度值,另一个保 存的是前一帧图像各像素的水波高度值;本步骤进一步包括为了产生水波蔓延的衰减效果,可以对每次得到的水波高度 值不为0的像素对应的水波高度值都乘以一个小于1的系数,这样水波高度值会不断减小, 产生水波蔓延的衰减效果,如乘以l_2_n等,其中,η的值越大,衰减的越慢,当所有像素的 水波高度值都为0时,停止产生下一帧驱动消息。本步骤中,为了不阻塞点击事件的处理,下一帧驱动消息的优先级要低于或等于 点击事件的优先级;所述下一帧驱动消息可以是定时器定时触发的消息。步骤205 根据下一帧图像各像素的水波高度值,获取像素偏移量,将原图像各像 素按照像素偏移量重新进行位置排列得到下一帧图像,并显示所述下一帧图像;所述像素偏移量分为水平偏移量和垂直偏移量,分别对应像素坐标的横坐标与纵 坐标;具体的,在每次获得下一帧图像各像素的水波高度值时,根据下一帧图像各像素 的水波高度值,将每个像素的左右两个像素的水波高度值的差值右移指定位,作为水平偏 移量,上下两个像素的水波高度值的差值右移指定位,作为垂直偏移量,下一帧图像中,每 个像素都由该像素坐标加上相应的水平偏移量和垂直偏移量后,所对应的原图像上的像素 填充,在得到下一帧图像后,显示所述下一帧图像到界面;例如将原图像的所有像素在界面上的横坐标减去left,纵坐标减去top,得到在 矩形区域内的坐标,以原图像上的某一像素为例,在矩形区域内,该像素的坐标设为(m,n), 将坐标为(m-l,n)和(m+l,n)的两个像素的水波高度值的差值右移指定位,作为水平偏移 量dx ;将坐标为(m,n+1)和(m,n-1)的两个像素的水波高度值的差值右移指定位,作为垂 直偏移量dy,下一帧图像中,坐标为(m,η)的像素由原图像坐标为(m+dx,n+dy)的像素填 充;依此类推,下一帧图像中每个像素按上述方法填充;其中,所述坐标为(m-1,η)、(m+1, η)、(m, n+1)、(m, η-1)中的任意一个超出矩形 区域时,即下一帧图像中,坐标为(m,η)的像素是矩形区域边界上的像素,则用原图像上坐 标为(m,n)的像素填充。进一步的,本步骤在获取像素偏移量之前还包括设置帧计数器和跳帧条件,帧计 数器用于对下一帧驱动消息进行计数,根据帧计数器对下一帧驱动消息的计数值,在满足 跳帧条件时,跳过此次的下一帧驱动消息;如跳帧条件为当前帧数不为N的整数倍时跳 过,N可以为2 9的整数,则当帧计数器的计数值不为N的整数倍时,跳过此次下一帧驱动 消息,等待下一次的下一帧驱动消息;即当有下一帧驱动消息时,帧计数器的计数值加1, 并判断计数值是否为N的整数倍,如果不为N的整数倍,不向下执行,等待下一次下一帧驱 动消息;如果为N的整数倍,则继续向下执行;这样会为处理速度较慢的处理器减小负担;
进一步的,本步骤中,当水波纹正在进行的同时,又有投石点出现时,将当前帧图 像各像素的水波高度值作为初始水波高度值,重新从第一次下一帧驱动消息产生时进行处 理,这样前后两个投石点产生的水波纹将产生相互干涉的效果;本发明所述方法进一步包括为了产生水波在边沿处弹回的效果,可以在将原图 像各像素按照像素偏移量重新进行位置排列时,将加上像素偏移量后,超出矩形区域的坐 标映射到矩形区域内,下一帧图像的相应位置的像素由映射到矩形区域内的坐标所对应的 原图像的像素填充;例如将原图像的坐标为(m+dx,n+dy)的像素排列到下一帧图像的坐 标(m,η)处时,假设是横坐标超出范围,即m+dx >图宽或m+dx < 0,若m+dx >图宽,则取 m+dx对m得余数做横坐标,若m+dx < 0,则取图宽加上m+dx对m得余数做横坐标,使其在 原图像的范围内,将新得到的坐标对应原图像的像素填充到下一帧图像的(m,n)处;本发明所述方法进一步包括设置控制按键,如开启、暂停、继续、退出等,当开 启按键按下时,开启水波纹的特效;当暂停按键按下时,暂停产生下一帧驱动消息;当继续 按键按下时,继续产生下一帧驱动消息;当退出按键按下时,关闭水波纹的特效;进一步的,所述控制按键还包括衰减按键、雨点按键;当衰减按键按下时,对每 次生成的下一帧图像中水波高度值不为0的像素对应的水波高度值都乘以一个小于1的系 数;当雨点按键按下时,每隔一定的帧数随机选取界面上的一个像素位置作为投石点ο基于上述的方法,本发明还提供一种实现水波纹特效的装置,如图4所示,该装置 包括初始设置模块41、投石点模块42、投石处理模块43、驱动消息模块44、显示模块45、 存储模块46;其中,初始设置模块41,用于在界面设定水波纹特效的矩形区域,获取所述矩形区域内 的图像作为原图像;设置原图像所有像素的初始水波高度值及石头的参数;投石点模块42,用于获取界面上被点击的像素位置作为投石点,通知投石处理模 块43和驱动消息模块44 ;所述界面一般为移动终端的触摸界面;投石处理模块43,用于获得下一帧图像各像素的水波高度值,并通知存储模块 46 ;所述投石处理模块43获得下一帧图像各像素的水波高度值,具体为在第一次下 一帧驱动消息产生时,根据投石点及设置的石头的大小,在石头覆盖范围内的像素的水波 高度值由初始水波高度值与根据石头重量产生的水波高度值相加得到,其他像素的水波高 度值仍为初始水波高度值;在第一次以后的每次下一帧驱动消息产生时,对于当前帧图像每个位置的像素, 取其周围的4个或4个以上像素的水波高度值的和,右移指定位后,减去前一帧图像所述位 置的像素的水波高度值,将得到的结果作为下一帧图像相应位置像素的水波高度值,并记 录下一帧图像各像素的水波高度值;驱动消息模块44,用于周期性产生下一帧驱动消息并发送到显示模块45,可以是定时器定时触发的消息;其中,为了不阻塞点击事件的处理,所述驱动消息模块44还用于将下一帧驱动消息的优先级设置为低于或等于点击事件的优先级;显示模块45,用于通知投石处理模块43,并根据投石处理模块43获得的下一帧图 像各像素的水波高度值,获取像素偏移量,将原图像各像素按照像素偏移量重新进行位置 排列得到下一帧图像;将得到的下一帧图像显示到界面;存储模块46,用于记录投石处理模块43得到的水波高度值;进一步的,所述存储模块46,用于以两个指定的位置记录当前帧图 像和前一帧图 像各像素的水波高度值;在收到投石处理模块43的通知时,用投石处理模块43得到的水波 高度值覆盖已经记录的前一帧图像各像素的水波高度值;此时,将原来当前的当前帧图像 各像素的水波高度值设置为前一帧图像各像素的水波高度值;刚记录的投石处理模块43 得到的水波高度值设置为当前帧图像各像素的水波高度值;所述投石处理模块43,进一步用于当有石头投入时,根据石头的大小,判断石头是 否砸到边界,如果砸到矩形区域的边界,则通过对投石点坐标的加减运算调整投石点的位 置,使石头边缘紧邻矩形区域的边界;所述投石处理模块43,进一步用于当水波纹正在进行的同时,又收到投石点模块 42通知的投石点、且收到显示模块45的通知时,将当前帧图像各像素的水波高度值作为各 像素的初始水波高度值,重新从第一次下一帧驱动消息产生时进行处理;所述投石处理模块43,进一步用于产生水波蔓延的衰减效果,即对每次得到的 水波高度值不为0的像素对应的水波高度值都乘以一个小于1的系数后,通知存储模块 46 ;所述显示模块45进一步用于产生水波在边沿处弹回的效果,即在将原图像各像 素按照像素偏移量重新进行位置排列时,将加上像素偏移量后,超出矩形区域的坐标映射 到矩形区域内,下一帧图像的相应位置的像素由映射到矩形区域内的坐标所对应的原图像 的像素填充;该装置进一步包括控制模块47,用于提供开启、暂停、继续、退出等按键,其中,开启按键,用于开启所有模块;暂停按键,用于通知驱动消息模块44暂停产生下一帧驱动消息;继续按键,用于通知驱动消息模块44继续产生下一帧驱动消息;退出按键,用于关闭所有模块;所述控制模块47,进一步的包括衰减按键、雨点按键;其中,衰减按键,用于通知投石处理模块43产生水波蔓延的衰减效果;雨点按键,用于通知投石点模块42每隔一定的帧数随机选取界面上的一个像素 位置作为投石点;相应的,所述投石点模块43进一步用于每隔一定的帧数随机选取界面上的一个 像素位置作为投石点,通知投石处理模块43 ;所述装置进一步包括跳帧模块48、帧计数器49,其中,跳帧模块48,用于设置跳帧条件,并根据帧计数器的计数值,判断是否满足跳帧条 件,如果满足,则通知显示模块45跳过此次的下一帧驱动消息;所述跳过此次的下一帧驱 动消息,即显示模块45在通知投石处理模块43之后,结束操作;所述显示模块45,进一步用于在获取像素偏移量之前,通知跳帧模块48,并在收到跳帧模块48通知跳过此次的下一帧驱动消息时,跳过此次的下一帧驱动消息;帧计数器49,用于对下一帧驱动消息进行计数,并把计数值通知跳帧模块 48。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在 本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护 范围之内。
权利要求
一种实现水波纹特效的方法,其特征在于,该方法包括在界面设定水波纹特效的矩形区域,获取所述矩形区域内的图像作为原图像;设置原图像所有像素的初始水波高度值及石头的参数;在移动终端的界面上有点击发生时,以被点击的像素位置作为投石点,周期性产生下一帧驱动消息,在每次下一帧驱动消息产生时,获得下一帧图像各像素的水波高度值并记录;根据下一帧图像各像素的水波高度值,获取像素偏移量,将原图像各像素按照像素偏移量重新进行位置排列得到下一帧图像,并显示。
2.根据权利要求1所述的方法,其特征在于,所述获取像素偏移量,将原图像各像素按 照像素偏移量重新进行位置排列得到下一帧图像,具体为将每个像素的左右两个像素的 水波高度值的差值右移指定位,作为水平偏移量,上下两个像素的水波高度值的差值右移 指定位,作为垂直偏移量,下一帧图像中,每个像素都由该像素的坐标加上相应的水平偏移 量和垂直偏移量后,所对应的原图像上的像素填充。
3.根据权利要求1所述的方法,其特征在于,所述获得下一帧图像各像素的水波高度 值并记录具体为在第一次下一帧驱动消息产生时,根据投石点及设置的石头的大小,在石 头覆盖范围内的像素的水波高度值由初始水波高度值与根据石头重量产生的水波高度值 相加得到,其他像素的水波高度值仍为初始水波高度值,记录各像素的水波高度值;在第一次以后的每次下一帧驱动消息产生时,对于当前帧图像每个位置的像素,取其 周围的多个像素的水波高度值的和,右移指定位后,减去前一帧图像所述位置的像素的水 波高度值,将得到的结果作为下一帧图像相应位置像素的水波高度值,并记录下一帧图像 各像素的水波高度值。
4.根据权利要求3所述的方法,其特征在于,当水波纹正在进行的同时,又有投石点出 现时,该方法进一步包括将当前帧图像各像素的水波高度值作为初始水波高度值,重新从 第一次下一帧驱动消息产生时进行处理。
5.根据权利要求4所述的方法,其特征在于,该方法进一步包括设置帧计数器和跳帧 条件,根据帧计数器对下一帧驱动消息的计数值,在满足跳帧条件时,跳过此次的下一帧驱 动消息。
6.根据权利要求5所述的方法,其特征在于,该方法进一步包括产生水波蔓延的衰减 效果,具体为对每次得到的水波高度值不为O的像素对应的水波高度值都乘以一个小于1 的系数。
7.根据权利要求6所述的方法,其特征在于,该方法进一步包括产生水波在边沿处弹 回的效果,具体为在将原图像各像素按照像素偏移量重新进行位置排列时,将加上像素偏 移量后,超出矩形区域的坐标映射到矩形区域内,下一帧图像的相应位置的像素由映射到 矩形区域内的坐标所对应的原图像的像素填充。
8.一种实现水波纹特效的装置,其特征在于,该装置包括初始设置模块、投石处理模 块、驱动消息模块、显示模块、存储模块、投石点模块;其中,初始设置模块,用于在界面设定水波纹特效的矩形区域,获取所述矩形区域内的图像 作为原图像;设置原图像所有像素的初始水波高度值及石头的参数;投石点模块,用于获取移动终端界面上被点击的像素位置作为投石点,通知投石处理模块和驱动消息模块;投石处理模块,用于获得下一帧图像各像素的水波高度值,并通知存储模块; 驱动消息模块,用于周期性产生下一帧驱动消息给显示模块; 显示模块,用于通知投石处理模块,并根据投石处理模块获得的下一帧图像各像素的 水波高度值,获取像素偏移量,将原图像各像素按照像素偏移量重新进行位置排列得到下 一帧图像;将得到的下一帧图像显示到界面;存储模块,用于记录投石处理模块得到的水波高度值。
9.根据权利要求8所述的装置,其特征在于,所述投石处理模块,进一步用于当水波纹 正在进行的同时,又收到投石点模块通知的投石点、且收到显示模块的通知时,将当前帧图 像各像素的水波高度值作为各像素的初始水波高度值,重新从第一次下一帧驱动消息产生 时进行处理;和/或,所述投石处理模块,进一步用于产生水波蔓延的衰减效果,具体的对每次得 到的水波高度值不为O的像素对应的水波高度值都乘以一个小于1的系数后,通知存储模 块;和/或,所述显示模块,进一步用于产生水波在边沿处弹回的效果,具体的在将原图 像各像素按照像素偏移量重新进行位置排列时,将加上像素偏移量后,超出矩形区域的坐 标映射到矩形区域内,下一帧图像的相应位置的像素由映射到矩形区域内的坐标所对应的 原图像的像素填充。
10.根据权利要求8或9所述的装置,其特征在于,所述装置进一步包括跳帧模块、帧计 数器,其中,跳帧模块,用于设置跳帧条件,并根据帧计数器的计数值,在满足跳帧条件时,通知显 示模块跳过此次的下一帧驱动消息;所述显示模块,进一步用于在获取像素偏移量之前,通知跳帧模块,并在收到跳帧模块 通知跳过此次的下一帧驱动消息时,跳过此次的下一帧驱动消息;帧计数器,用于对下一帧驱动消息进行计数,并把计数值通知跳帧模块。
全文摘要
本发明公开了一种实现水波纹特效的方法,在界面设定水波纹特效的矩形区域,获取所述矩形区域内的图像作为原图像;设置原图像所有像素的初始水波高度值及引起水波纹的石头的参数;在移动终端的界面上有点击发生时,以被点击的像素位置作为投石点,周期性产生下一帧驱动消息,在每次下一帧驱动消息产生时,获得下一帧图像各像素的水波高度值并记录;根据下一帧图像各像素的水波高度值,获取像素偏移量,将原图像各像素按照像素偏移量重新进行位置排列得到下一帧图像,并显示;本发明同时还公开了一种实现水波纹特效的装置,如此,将每一帧图像在界面上显示,就会出现水波纹的视觉效果。
文档编号G06F3/14GK101814006SQ20101015988
公开日2010年8月25日 申请日期2010年4月28日 优先权日2010年4月28日
发明者曹会通 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1