正文

利用VC实现图像的特殊显示效果2006-01-01 21:58:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/super/9173.html

分享到:

利用VC实现图像的特殊显示效果

 

    一、"浮雕"图像

"浮雕"效果是指图像的前景向前凸出背景。所谓的"浮雕"处理就是指图像上的一个像素和它左上方的那个像素之间差值的一种处理过程。

为了使图像保持一定的亮度并呈现灰色,在处理过程中为这个差值加了一个数值为128的常量。

当设置一个像素值的时候,它和它左上方的像素都要被用到,为了避免用到已经设置过的像素,应该从图像的右下方的像素开始处理,下面是实现的VC源代码:

 

int i,j,buf;

       for( i=pBi->biHeight-1; i>=2; i--)

       {

              for( j=width-1; j>=2; j--)

              {

                     //"浮雕"处理

                     buf=*(pD+i*width+j)-*(pD+(i-1)*width+j-1)+128;

                     if(buf>255)

                            buf=255;

                     if(buf<0)

                            buf=0;

                     *(data+i*width+j)=(BYTE)buf;

              }/*for*/

       }/*for*/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


二、"雕刻"图像

"雕刻"图像与"浮雕"效果相反,它是通过取一个像素和它右下方的像素之间的差值并加上一个常数,这里也取128。经过这样处理,就可以得到"雕刻"图像,这时候图像的前景凹陷进背景之中。

同样为了避免重复使用处理过的图像像素,处理图像时从图像的左上方的像素开始。VC实现源代码如下:

int i,j,buf;

       for( i=0; i<=pBi->biHeight-2; i++)

       {

              for( j=0; j<=width-2; j++)

              {

                     //“雕刻”处理

                     buf=*(pD+i*width+j)-*(pD+(i+1)*width+j+1)+128;

                     if(buf>255)

                            buf=255;

                     if(buf<0)

                            buf=0;

                     *(data+i*width+j)=(BYTE)buf;

              }/*for*/

       }/*for*/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

 

 

阅读(2715) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册