MTK特效制作方法是本文要介绍的内容,主要是来了解并学习MTK的应用使用方法,具体内容的实现来看本文详解。
在WIN图像编程或者FLASH制作过程中,百页窗是最简单也是人们最常表演的特效.了解了核心算法,也就可以很容易的使用在MTK的屏幕切换中。
- for(i=0;i
- {
- my_gdi_layer_bitblt(Transition_Effect_layer,i*(UI_device_width/frame_num),0,
- g_step_w,UI_device_height,bg_layer,i*(UI_device_width/frame_num),0);
- }
变量frame_num;是百叶窗的页数,Transition_Effect_layer是特效层,bg_layer是新窗口的层.核心函数在于这个层的拷贝函数.有关这个函数的代码,功能和用法,有兴趣的朋友可以参考我的另一篇专门介绍层拷贝的函数的文章.
对于MTK平台来说,菜单和屏幕特效曾经在很长的一段时间里,影响甚远。
但对于其设计过程和方法,由于各种各样的原因,很少有人提及。
这里介绍一种不同于前几天日志所载之方法的另一种方法,就是合并图层,其核心实现函数如下。
- voidmy_gdi_layer_copy(gdi_layer_struct*dst_layer,intdst_x,intdst_y,intwidth,intheight,
- gdi_layer_struct*src_layer,intsrc_x,intsrc_y)
- {
- U16*dst_buf,*src_buf;
- inti;
- if(dst_x<0||dst_y<0||dst_x+width>dst_layer->width||dst_y+height>dst_layer->height)
- {
- if(dst_x<0)
- {
- width-=-dst_x;
- src_x+=-dst_x;
- dst_x=0;
- }
- if(dst_y<0)
- {
- height-=-dst_y;
- src_y+=-dst_y;
- dst_y=0;
- }
- if(dst_x+width>dst_layer->width)
- {
- width=dst_layer->width-dst_x;
- }
- if(dst_y+height>dst_layer->height)
- {
- height=dst_layer->height-dst_y;
- }
- }
- if(src_x<0||src_y<0||src_x+width>src_layer->width||src_y+height>src_layer->height)
- {
- if(src_x<0)
- {
- width-=-src_x;
- dst_x+=-src_x;
- src_x=0;
- }
- if(src_y<0)
- {
- height-=-src_y;
- dst_y+=-src_y;
- src_y=0;
- }
- if(src_x+width>src_layer->width)
- {
- width=src_layer->width-src_x;
- }
- if(src_y+height>src_layer->height)
- {
- height=src_layer->height-src_y;
- }
- }
- if(width<=0||height<=0)
- return;
- dst_buf=(U16*)dst_layer->buf_ptr+dst_y*dst_layer->width+dst_x;
- src_buf=(U16*)src_layer->buf_ptr+src_y*src_layer->width+src_x;
- for(i=0;i
- {
- memcpy(dst_buf,src_buf,width*2);
- dst_buf+=dst_layer->width;
- src_buf+=src_layer->width;
- }
- }
有兴趣的朋友可以自己利用该函数研发各种各样的变化效果。
这个函数,加上我前一段时间提供的另一种方法,大致可以制作二十种左右的效果。
小结:详解MTK特效制作方法的内容介绍万能了,希望通过MTK应用内容的学习能对你有所帮助。