TransparentImage.h 文件
#ifndef __TRANSPARENTIMAGE_H_TRANSPARENTIMAGE_42A6E395_97E4_11D3_B6F0_005004024A9E
#define __TRANSPARENTIMAGE_H_TRANSPARENTIMAGE_42A6E395_97E4_11D3_B6F0_005004024A9E
#if _MSC_VER >= 1000
#pragma once
#endif
class CTransparentImage : public CStatic
{
public:
CTransparentImage();
virtual ~CTransparentImage();
protected:
//{{AFX_MSG( CTransparentImage)
//afx_msg void OnPaint();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
protected:
COLORREF m_maskColor;
UINT m_nBitmapID;
int m_nTop;
int m_nLeft;
CString m_strText;
public:
afx_msg void OnPaint();
void SetMaskColor(COLORREF maskColor);
void SetBitmapID(UINT nID);
};
//{{AFX_INSERT_LOCATION}}
#endif
TransparentImage.cpp 文件
//
#include "StdAfx.h"
#include "resource.h"
#include "TransparentImage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__ ;
#endif
CTransparentImage::CTransparentImage()
{
m_nBitmapID = 0;
m_nTop = 0;
m_nLeft = 0;
m_maskColor = RGB(212,208,200);
}
CTransparentImage::~CTransparentImage()
{
}
BEGIN_MESSAGE_MAP(CTransparentImage, CStatic)
//{{AFX_MSG_MAP( CTransparentImage )
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CTransparentImage::OnPaint()
{
CPaintDC pDC(this);
CRect rect;
GetClientRect(&rect);
CBitmap FootballBMP;
FootballBMP.LoadBitmap(m_nBitmapID);
CDC ImageDC;
ImageDC.CreateCompatibleDC(&pDC);
CBitmap *pOldImageBMP = ImageDC.SelectObject(&FootballBMP);
TransparentBlt(pDC.m_hDC, 0, 0, rect.Width(),rect.Height(), ImageDC.m_hDC, 0, 0, rect.Width(),rect.Height(), m_maskColor);
ImageDC.SelectObject(pOldImageBMP);
FootballBMP.DeleteObject();
}
// 设置位图资源
void CTransparentImage::SetBitmapID(UINT nID)
{
m_nBitmapID = nID;
}
// 设置图片背景所需颜色,从而实现图片背景颜色和图片外背景色一致
void CTransparentImage::SetMaskColor(COLORREF maskColor)
{
m_maskColor = maskColor;
}