程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 圖形顯示特技算法

圖形顯示特技算法

編輯:關於VC++

水平百葉窗:將圖象分成若干等份,每次掃描各等份的1象素寬後Sleep一段時間,再掃描下一象素,直到每份的象素都掃描完。

雨滴效果:讀入位圖的最後一行象素,從屏幕的最上端開始移動到象素的實際位置;接著讀入倒數第一行象素,依次類推。

具體步驟如下:

  • 1.在工程中加入變量: CDC memdc;
    CBitmap m_bitmap;
  • 2.在資源中加入位圖資源,ID為IDB_BITMAP1;
  • 3.在構造函數中加入初始化代碼: m_bitmap.LoadBitmap(IDB_BITMAP1);
  • 4.在OnDraw(CDC* pDC)中加入如下代碼: void CMyView::OnDraw(CDC* pDC)
    {
      CMyDoc* pDoc = GetDocument();
      ASSERT_VALID(pDoc);
      int width;      // 位圖的寬度
      int height;      //位圖的高度
      if(!memdc.GetSafeHdc())
        {
          memdc.CreateCompatibleDC(pDC);
          memdc.SelectObject(&m_bitmap);
        }
        //獲取位圖大小信息
        BITMAP bm;
        m_bitmap.GetBitmap(&bm);
        width=bm.bmWidth;
        height=bm.bmHeight;
      if(next==2)//水平向左掃描
      {
        
        for(int i=0;i<width;i++)
        {
          pDC->BitBlt(i,0,1,height,&memdc,i,0,SRCCOPY);
          Sleep(1);
        }
      }
      else if(next==1)//水平向右掃描
      {
        
        for(int i=width-1;i>=0;i--)
        {
          pDC->BitBlt(i,0,1,height,&memdc,i,0,SRCCOPY);
          Sleep(1);
        }
      }
      else if(next==3)//水平百葉窗
      {
        
        //每條20象素寬
        int num=width/20;
        for(int i=0;i<20;i++)
        {
          //分別掃描每條
          for(int j=0;j<num;j++)
          {
            pDC->BitBlt(j*20+i,0,1,height,&memdc,j*20+i,0,SRCCOPY);
            
          }
          Sleep(10);
        }
      }
      else if(next==4)//垂直百葉窗
      {
        int num=height/20;
        for(int i=0;i<20;i++)
        {
          //分別掃描每條
          for(int j=0;j<num;j++)
          {
            pDC->BitBlt(0,j*20+i,width,1,&memdc,0,j*20+i,SRCCOPY);
            
          }
          Sleep(10);
        }
      }
      else if(next==5)//雨滴效果
      {
        for(int i=height-1;i>=0;i--)
        {
          for(int j=0;j<i;j++)
          {
            pDC->BitBlt(0,j,width,1,&memdc,0,i,SRCCOPY);
            Sleep(10);
          }
         
        }
      }
      // TODO: add draw code for native data here
    }  
    其它實現細節請參見源代碼。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved