首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Windows界面编程第十三篇 位图展示特效合集

2013-03-27 
Windows界面编程第十三篇 位图显示特效合集本文配套程序下载地址为:http://download.csdn.net/detail/more

Windows界面编程第十三篇 位图显示特效合集

本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5177047

转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8696730

欢迎关注微博:http://weibo.com/MoreWindows

Windows界面编程之位图显示特效系列目录:

1. 《Windows界面编程第九篇位图显示特效交错效果》

http://blog.csdn.net/morewindows/article/details/8696720

2. 《Windows界面编程第十篇位图显示特效百叶窗效果》

http://blog.csdn.net/morewindows/article/details/8696722

3. 《Windows界面编程第十一篇位图显示特效随机积木效果》

http://blog.csdn.net/morewindows/article/details/8696724

4. 《Windows界面编程第十二篇位图显示特效飞入效果与伸展效果》

http://blog.csdn.net/morewindows/article/details/8696726

5. 《Windows界面编程第十三篇位图显示特效合集》

http://blog.csdn.net/morewindows/article/details/8696730

 

前面的四篇已经介绍了位图的交错效果、百叶窗效果、随机积木效果、飞入效果与伸展效果。下面用一个程序将展示这些效果。这里给出主要代码(下载地址见:http://download.csdn.net/detail/morewindows/5177047)。代码中的DragAcceptFiles可以参考《Windows界面编程第七篇文件拖拽(文件拖放)》(http://blog.csdn.net/morewindows/article/details/8634451),主要是为了能将位图文件拖入到窗口中。

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){static int   s_nShow;static HDC   s_hdcMem;static int   s_nWidth, s_nHeight;switch (message){case WM_CREATE:{DragAcceptFiles(hwnd, TRUE);   // 加载位图HBITMAP hBitmap;  hBitmap = (HBITMAP)LoadImage(NULL, "107.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);  if (hBitmap == NULL)  {  MessageBox(hwnd, "LoadImage failed", "Error", MB_ICONERROR);  exit(0);  }// 位图HDCHDC hdc = GetDC(hwnd);s_hdcMem = CreateCompatibleDC(hdc);SelectObject(s_hdcMem, hBitmap);ReleaseDC(hwnd, hdc);// 计算位图宽高BITMAP bm;GetObject(hBitmap, sizeof(bm), &bm);s_nWidth = bm.bmWidth;s_nHeight = bm.bmHeight;s_nShow = 0;}return 0;    case WM_KEYDOWN:           switch (wParam)          {          case VK_ESCAPE: //按下Esc键时退出               SendMessage(hwnd, WM_DESTROY, 0, 0);              return 0;          }          break; case WM_PAINT:{HDC             hdc;  PAINTSTRUCT     ps;  hdc = BeginPaint(hwnd, &ps);switch (s_nShow){case 0:BitBlt(hdc, 0, 0, s_nWidth, s_nHeight, s_hdcMem, 0, 0, SRCCOPY);break;// 水平交错case 1:AnimateDraw_StaggeredHorizontal(hdc, s_hdcMem, s_nWidth, s_nHeight);break;// 垂直交错case 2:AnimateDraw_StaggeredVertical(hdc, s_hdcMem, s_nWidth, s_nHeight);break;// 水平百叶窗case 3:AnimateDraw_JalousieHorizontal(hdc, s_hdcMem, s_nWidth, s_nHeight);break;// 垂直百叶窗case 4:AnimateDraw_JalousieVertical(hdc, s_hdcMem, s_nWidth, s_nHeight);break;// 随机积木case 5:AnimateDraw_RandomBlocks(hdc, s_hdcMem, s_nWidth, s_nHeight);break;// 飞入 从上往下case 6:AnimateDraw_FlyingTopToBottom(hdc, s_hdcMem, s_nWidth, s_nHeight, 2, FALSE);break;// 飞入 从下往上case 7:AnimateDraw_FlyingBottomToTop(hdc, s_hdcMem, s_nWidth, s_nHeight, 2, FALSE);break;// 飞入 从左往右case 8:AnimateDraw_FlyingLeftToRight(hdc, s_hdcMem, s_nWidth, s_nHeight, 2, FALSE);break;// 飞入 从右往左case 9:AnimateDraw_FlyingRightToLeft(hdc, s_hdcMem, s_nWidth, s_nHeight, 2, FALSE);break;// 伸展 从上往下case 10:AnimateDraw_FlyingTopToBottom(hdc, s_hdcMem, s_nWidth, s_nHeight);break;// 伸展 从下往上case 11:AnimateDraw_FlyingBottomToTop(hdc, s_hdcMem, s_nWidth, s_nHeight);break;// 伸展 从左往右case 12:AnimateDraw_FlyingLeftToRight(hdc, s_hdcMem, s_nWidth, s_nHeight);break;// 伸展 从右往左case 13:AnimateDraw_FlyingRightToLeft(hdc, s_hdcMem, s_nWidth, s_nHeight);break;}if (s_nShow != 0){s_nShow = 0;InvalidateRect(hwnd, NULL, FALSE);}EndPaint(hwnd, &ps);}return 0;case WM_COMMAND:if (LOWORD(wParam) >= 40001 && LOWORD(wParam) <= 40013){s_nShow = LOWORD(wParam) - 40000;InvalidateRect(hwnd, NULL, TRUE);return 0;}break;// 文件拖拽第三步 DragQueryFile and DragQueryFilecase WM_DROPFILES:{HDROP hDrop = (HDROP)wParam;UINT nFileNum = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0); // 拖拽文件个数char strFileName[MAX_PATH];DragQueryFile(hDrop, 0, strFileName, MAX_PATH);//获得拖曳的文件名DragFinish(hDrop);      //释放hDropDeleteDC(s_hdcMem);// 加载位图HBITMAP hBitmap;  hBitmap = (HBITMAP)LoadImage(NULL, strFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);  // 位图HDCHDC hdc = GetDC(hwnd);s_hdcMem = CreateCompatibleDC(hdc);SelectObject(s_hdcMem, hBitmap);ReleaseDC(hwnd, hdc);// 计算位图宽高BITMAP bm;GetObject(hBitmap, sizeof(bm), &bm);s_nWidth = bm.bmWidth;s_nHeight = bm.bmHeight;InvalidateRect(hwnd, NULL, TRUE);}return 0; case WM_DESTROY:DeleteDC(s_hdcMem);PostQuitMessage(0);return 0;}return DefWindowProc(hwnd, message, wParam, lParam);}

下面是程序所展示的一种显示效果(图片不能打开,请访问http://blog.csdn.net/morewindows/article/details/8696730)。

Windows界面编程第十三篇 位图展示特效合集

更多显示效果可以参考前面的交错效果、百叶窗效果、随机积木效果、飞入效果与伸展效果博客中的示例。

本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5177047

转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8696730

欢迎关注微博:http://weibo.com/MoreWindows


 

1楼masikkk昨天 22:55
学习了

热点排行