Windows介面編程第十三篇 位元影像顯示特效合集

來源:互聯網
上載者:User

本文配套程式為: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)。

更多顯示效果可以參考前面的交錯效果、百葉窗效果、隨機積木效果、飛入效果與伸展效果部落格中的樣本。

本文配套程式為:http://download.csdn.net/detail/morewindows/5177047

轉載請標明出處,原文地址:http://blog.csdn.net/morewindows/article/details/8696730

歡迎關注微博:http://weibo.com/MoreWindows

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.