个性凸现的动画特技效果

个性凸现的动画特技效果,第1张

个性凸现的动画特技效果,第2张

如果你用过Photoshop之类的图像处理工具,你一定对它们的各种图形处理方法感到兴奋。然而,它只能处理单一的静止图像。如果有一种方法可以在自己的应用程序中加入类似Photoshop中的图像处理功能,并且是一种改进的动态特技处理方法,你会怎么想?如果你感兴趣,请继续读下去。

在介绍这些特效处理方法之前,我们先做一些技术约定:用C++Builder开发工具编写,应用扫描线处理技术(可以大大提高图像处理速度)。如果你用的不是C++Builder开发工具,没关系。先了解以下处理方法再对处理函数做一些修改,可以应用到自己喜欢的开发工具上。

一种特殊效果,模糊淡出效果

也许你对淡入淡出的效果很熟悉,但是淡出的同时模糊的效果你一定觉得很新鲜!

先分别说说淡出和模糊效果的原理。淡出功能的原理很简单,就是将每个像素的R、G、B的颜色值减去同一个整数,直到零,这样就可以使整个图像变暗。模糊函数相对复杂,因为必须考虑周围像素的影响,所以引入了加权算法,按照给定的系数对周围像素和当前像素的颜色值进行加权。

让我们参考下面的例子。在C++Builder中新建一个项目(表单保存为test.cpp),在表单中添加一个图像控件、一个定时器控件和一个按钮控件。将Image控件的Autosize属性更改为True,将Visible属性更改为False,将Align属性更改为alClient,将Timer控件的Enable属性更改为False,将Interval属性更改为10,将Button控件的Caption属性更改为“观看淡出效果并退出”,所有其他属性都采用默认属性。

打开test.h头文件,在其中添加淡出函数和模糊函数的声明:

void softdowncolor(TImage *Bp,int step);//淡出功能

void soft FLT(ti mage * Bp);//模糊函数

其中淡出功能softdowncolor的步长参数是淡出时。

通过减去的颜色值,可以控制淡出速率。
接下来,在test.cpp文件中添加淡出函数和模糊函数的实现:

void soft down color(ti image * Bp,int step)

{ BYTE * ptr

int i,j;

int颜色;

Bp->图片->位图-> pixel format = pf 24 bit;

for(I = 0;ih height;i++){

ptr=(BYTE *)Bp->图片->位图-> ScanLine[I];

for(j = 0;jWidth * 3;j+=3){

color = ptr[j+2];

color-= step;

if(color ptr[j+2]= color;

color = ptr[j+1];

color-= step;

if(color ptr[j+1]= color;

color = ptr[j];

color-= step;

if(color ptr[j]= color;

}

}

}


void softflt(TImage *Bp)

{ int Div = 100

int temp[3];

int flt[9]={10,10,10,20,10,10,10,10,10 };

BYTE *ptr,*ptru,*ptrm,* ptrd

int i,j,k,m;

Bp->图片->位图-> pixel format = pf 24 bit;

for(k = 1;kPicture->位图->高度-1);k++){

ptr=(BYTE *)Bp->图片->位图->扫描线[k];

ptrm=(BYTE *)Bp->图片->位图->扫描线[k];

ptru=(BYTE *)Bp->图片->位图->扫描线[k-1];

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 个性凸现的动画特技效果

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情