扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:刘涛 来源:作者授权转载 2007年10月21日
关键字:
………………………………… int m=8; for(int i=0;i<=lpDIBHdr->biHeight;i++) for(int j=0;j<=lpDIBHdr->biWidth;j+=m) {//向下显示偶数条; StretchDIBits (hDC,j,0,m,i,j,lpDIBHdr->biHeight-i, m,i, lpDIBBits,(LPBITMAPINFO)lpDIBHdr, DIB_RGB_COLORS, SRCCOPY);//juanlianxiaoguo j=j+m; //向上显示奇数条; StretchDIBits (hDC,j,lpDIBHdr->biHeight-i,m,i,j,0, m,i, lpDIBBits,(LPBITMAPINFO)lpDIBHdr, DIB_RGB_COLORS, SRCCOPY);// DelayTime(20); }………………………………… |
………………………………… int m,n; int RectSize=60;//方块的宽、高尺寸为60个像素; if(lpDIBHdr->biWidth%RectSize!=0)//得到图像水平方块的个数; m= lpDIBHdr->biWidth/RectSize+1; else m= lpDIBHdr->biWidth/RectSize; if(lpDIBHdr->biHeight%RectSize!=0)//得到图像垂直方块的个数; n= lpDIBHdr->biHeight/RectSize+1; else n=lpDIBHdr->biHeight/RectSize; POINT *point=new POINT[n*m];//申请一个数组用来记录各个方块的左上角的坐标; POINT point1; for(int a=0;a<m;a++)//将各个方块的左上角的坐标记录到数组中; for(int b=0;b<n;b++) { point1.x=a*RectSize; point1.y=b*RectSize; *(point+a*b+b)=point1; } //开始随机的显示各个小方块; double fMax=RAND_MAX;//定义Rand()函数的最大值; for(int k=m*n-1;k>=0;k--) { int c=(int)((double)(m*n)*rand()/fMax); int mx=point[c].x; int my=point[c].y; //显示对应的图像的小块; StretchDIBits (hDC,mx,my,RectSize,RectSize, mx,lpDIBHdr->biHeight-my,RectSize,RectSize, lpDIBBits,(LPBITMAPINFO)lpDIBHdr, DIB_RGB_COLORS, SRCCOPY); point[c].x=point[k].x; point[c].y=point[k].y; DelayTime(50); } ………………………………… |
………………………………… //申请一个与图像缓冲区相同大小的内存; hdibcopy=(HDIB)GlobalAlloc(GMEM_SHARE,lpDIBHdr->biWidth*lpDIBHdr->biHeight); lpbits=(BYTE*)GlobalLock(hdibcopy); //将缓冲区的数据初始化; for(int k=0;k<lpDIBHdr->biWidth*lpDIBHdr->biHeight;k++) { *(lpbits+k)=(BYTE)255; } //显示最初的图像为“白色” StretchDIBits (hDC,0,0,lpDIBHdr->biWidth,lpDIBHdr->biHeight,0,0, lpDIBHdr->biWidth,lpDIBHdr->biHeight, lpbits,(LPBITMAPINFO)lpDIBHdr, DIB_RGB_COLORS, SRCCOPY); //布尔变量end用来标志何时淡入处理结束; BOOL end=false; while(!end) { int a=0; for(int k=0;k<lpDIBHdr->biWidth*lpDIBHdr->biHeight;k++) { //判断是否待显示的像素的灰度值已经小于原始图像对应点的灰度值,如是则计数; if(*(lpbits+k)<*(lpDIBBits+k)) a++; else//否则对应点的灰度值继续减少; *(lpbits+k)-=(BYTE)10; } //显示处理后的图像数据lpbits; StretchDIBits (hDC,0,0,lpDIBHdr->biWidth,lpDIBHdr->biHeight,0,0, lpDIBHdr->biWidth,lpDIBHdr->biHeight, lpbits,(LPBITMAPINFO)lpDIBHdr, DIB_RGB_COLORS, SRCCOPY); //如果所有的点的灰度值的都小于或等于原始图像的像素点的灰度值,则认为图像的淡入处理结束。 if(a==lpDIBHdr->biWidth*lpDIBHdr->biHeight) end=true; DelayTime(50); ………………………………… |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者