一個點陣圖淡入淡出控制元件 (轉)
我們經常在AboutBox中顯示一幅關於公司或自己訊息的點陣圖,有沒有想過讓這幅點陣圖有更酷的效果?比如加上淡入淡出效果?只要有了這個CAlphaCtrl就可以輕鬆實現。
CAlphaCtrl是從CStatic繼承而來。使用時只要把CalphaCtrl加入窗體,然後LoadAlphaBitmap(UINT uID, int iTimer)就可以實現點陣圖的淡入淡出。其中uID是點陣圖的資源ID,iTimer是點陣圖顯示時間間隔,值愈小顯示愈快。
下面就來說一說CalphaCtrl是如何實現的。關鍵的一個實現函式是一個 : AlphaBlend,此函式可以實現影像的透明顯示,相關的引數和資料請自行參閱MSDN,值得注意的是使用此函式時要連結到msimg32.lib庫。
:namespace prefix = o ns = "urn:schemas--com::office" />
第一步,我們先在CalphaCtrl類中增加幾個Data Member:CBitmap Bmp;
BOOL bCanPaint; UINT nBmpID; int nTimer;
第二步,在CalphaCtrl類中增加一個Member Function:
void AlphaDisplay(CDC &pDC, CClientDC &dc, BLENDFUNCTION& rBlendProps, int width, int heigh, byte nLevel)
{
//nLevel是透明度,0表示不顯示,255則完全顯示
rBlendProps.ConstantAlpha = nLevel;
AlphaBlend( dc.m_hDC, 0, 0, width, heigh, pDC.m_hDC, 0, 0,
width, heigh, rBlendProps );
}
第三步,增加一個名為tdDisplay的全域性函式,此函式為一個執行緒函式,用於點陣圖的顯示。
UINT tdDisplay(LPVOID lpParam)
{
CAlphaCtrl* AlphaCtrl = (CAlphaCtrl*)lpParam;
CClientDC dc(AlphaCtrl);
CDC pDC;
pDC.CreateCompatibleDC(&dc);
pDC.(&AlphaCtrl->Bmp);
BLENDFUNCTION rBlendProps;
rBlendProps.BlendOp = AC_SRC_OVER;
rBlendProps.BlendFlags = 0;
rBlendProps.AlphaFormat = 0;
BITMAP bmInfo;
::GetObject( AlphaCtrl->Bmp.m_hObject, sizeof(BITMAP), &bmInfo );
INT nWidth, nHeigh;
nWidth = bmInfo.bmWidth;
nHeigh = bmInfo.bmHeight;
AlphaCtrl->SetWindowPos(NULL, 0, 0, nWidth, nHeigh, SWP_NOMOVE);
int i = 0;
while(i <= 255)
{
AlphaCtrl->AlphaDisplay(pDC, dc, rBlendProps, nWidth, nHeigh, i);
i += 5;
Sleep(AlphaCtrl->nTimer);
}
AlphaCtrl->bCanPaint = 1; //Make OnPaint
AfxEndThread(0);
return 0;
}
第四步,現在萬事俱備,加上初始化函式:
BOOL LoadAlphaBitmap(UINT uID, int iTimer)
{
int i = Bmp.Loaitmap(uID);
if(i)
{
AfxBeginThread(tdDisplay, this);
nBmpID = uID;
nTimer = iTimer;
return 1;
}
else
{
TRACE("Load Bitmap Failedn");
return 0;
}
return 1;
}
最後,開啟你的對話方塊看一看那幅很酷的點陣圖!
需要原始碼的可以留下E-.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992132/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用點陣圖選單項——建立點陣圖 (轉)
- PHP掃描圖片轉點陣 二維碼轉點陣PHP
- 建立點陣圖選單 (轉)
- 使用點陣圖選單項——點陣圖選單項例項 (轉)
- 使用點陣圖選單項——設定點陣圖型別標記 (轉)型別
- 點陣圖
- BMP點陣圖格式詳解--轉載
- bitmap index點陣圖索引系列(一)Index索引
- 自我學習之一:淡入淡出(抄) (轉)
- 將圖象列表轉換成裝置無關點陣圖 (轉)
- 用 Java 儲存點陣圖檔案 (轉)Java
- 對Delphi控制元件的一點改良 (轉)控制元件
- 點陣圖排序排序
- MFC基礎--怎樣貼一張圓型的點陣圖 (轉)
- 對Delphi控制元件的一點改良(二) (轉)控制元件
- 對Delphi控制元件的一點改良(三) (轉)控制元件
- 點陣圖索引.sql索引SQL
- iOS自定義控制元件:自定義TableView、CollectionView空資料佔點陣圖iOS控制元件View
- 點陣圖索引(Bitmap Index)——從B*樹索引到點陣圖索引索引Index
- .NET中新增控制元件陣列 (轉)控制元件陣列
- 將一個Collection轉為陣列陣列
- BMP點陣圖檔案結構及VC操作 (轉)
- 載入點陣圖檔案到DirectDraw的方法(轉)
- 遊戲開發新手入門之點陣圖化圖形(轉)遊戲開發
- 淡入淡出的輪播圖元件元件
- 點陣圖索引(Bitmap Index)——點陣圖索引與資料DML鎖定索引Index
- 字幕圖示控制元件 (轉)控制元件
- .NET 控制元件轉圖片控制元件
- PHP 文字生成點陣圖PHP
- Redis 應用-點陣圖Redis
- 可寫點陣圖(WriteableBitmap)
- Oracle索引——點陣圖索引Oracle索引
- Oracle-點陣圖索引Oracle索引
- 點陣圖字型匯入
- C#實現控制元件陣列 (轉)C#控制元件陣列
- 使用點陣圖選單項——新增線和圖形到選單 (轉)
- 開發一個本地上傳圖片控制元件你需要知道的知識點控制元件
- BMP點陣圖檔案結構及平滑縮放 (轉)