/*********************************************************
函数说明:给图片添加居中的文字
参数:
1:strFileName :欲加载的图片的路径
2:strTile :被添加了字符串(以“/n”换行)
返回值 :添加后的图片的HBITMAP
*********************************************************/
HBITMAP AddString(LPCTSTR strFileName, LPCTSTR strTitle)
{
HBITMAP hbmp = (HBITMAP)::LoadImage(NULL,strFileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if (!hbmp)
{
::MessageBox(NULL,_T("Faild to load the file!"),_T("Error"),MB_OK);
return NULL;
}
BITMAP bmp;
GetObject(hbmp,sizeof(BITMAP),(LPVOID)&bmp);
CDC cdc;
cdc.CreateCompatibleDC(NULL);
SelectObject(cdc.GetSafeHdc(),hbmp);
HBITMAP hBitmap = CreateCompatibleBitmap(cdc.m_hDC,bmp.bmWidth,bmp.bmHeight);
ASSERT(hBitmap != NULL);
CFont font;
font.CreatePointFont(150,_T("黑体"));
SelectObject(cdc.m_hDC,font.m_hObject);
cdc.SetBkMode(TRANSPARENT);
SetTextColor(cdc.m_hDC,RGB(255,255,255));
CString str;
str.Format(_T("%s"),strTitle);
if (_T('/n') != str.Right(1))//在这里为字符串尾部添加一个“/n”为了便于后面计算输出
{
str+=_T("/n");
}
CString strline;//每一行输出的字符串
int nyFirst = 30;//第一行输出的纵坐标为20
while (str.GetLength()>1)
{
str.TrimLeft();
int nlen = str.Find(_T('/n'));
strline = str.Left(nlen);
str = str.Right(str.GetLength()-nlen);
CSize size = cdc.GetTextExtent(strline);
int nx = (float)bmp.bmWidth*0.5 -(float)size.cx*0.5;
TextOut(cdc.m_hDC,nx,nyFirst,strline,strline.GetLength());
nyFirst+=20;//行间距为20 Pix
}
return (HBITMAP)(*cdc.GetCurrentBitmap());
}