位图的转换与保存
我已经将字符串的输出值抓换位位图形式,希望将位图保存起来,
CDC* pDC=GetDC();
LOGFONT logfont;
lstrcpy((LPSTR)logfont.lfFaceName,(LPSTR)"华文行楷");
logfont.lfWeight=0;
logfont.lfWidth=0;
logfont.lfHeight=60;
logfont.lfEscapement=0;
logfont.lfUnderline=FALSE;
logfont.lfItalic=FALSE;
logfont.lfStrikeOut=FALSE;
logfont.lfCharSet=GB2312_CHARSET;
TEXTMETRIC tm;
//pDC->GetTextMetrics(&tm);
CFont font;
font.CreateFontIndirect(&logfont);
CFont *pOldFont=pDC->SelectObject(&font);
//CString mystr;
CPoint mypoint(0,50);
//WCHAR wc[ 0x100 ] = { 0x4E00, 0 };
char ac[ 0x100 ] = "";
//WideCharToMultiByte( CP_ACP, 0, wc, 1, ac, 2, NULL, NULL );
//pDC->TextOut( mypoint.x,mypoint.y,ac,2);
unsigned int i;
//CString mystr=" ";
for(i=0x4E00;i<=0x4E09;i++)
{
WCHAR wc[ 0x100 ] = { i, 0 };
WideCharToMultiByte( CP_ACP, 0, wc, -1, ac, 2, NULL, NULL );
//mystr+=ac
pDC->GetTextMetrics(&tm);
//mypoint.x+=60;
mystr+=ac;
//pDC->TextOut( mypoint.x, mypoint.y, ac);
/*if((i-17)%21==0)
{
mypoint.y+=60;
mypoint.x=0;
}*/
}
pDC->TextOut( mypoint.x, mypoint.y, mystr);
//pDC->SelectObject(pOldFont);
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1); // 载入你的位图
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
CBitmap* pOldBitmap=dcMemory.SelectObject(&bmp); // 将位图选入内存DC
dcMemory.TextOut(mypoint.x,mypoint.y,mystr); // 在内存DC上输出文字,此时内存中已有位图存在了
pDC->BitBlt(0,150,bmpInfo.bmWidth,bmpInfo.bmHeight,&dcMemory,
0,0,SRCCOPY); // 将内存DC中的改造后的位图传送到本DC
dcMemory.SelectObject(pOldBitmap);
pDC->SelectObject(pOldFont);
LPRECT lpRect;
这里根据字符串创建的位图是DDB形式还是DIB形式,如果是DDB形式,想将其保存为DIB位图,是不是要先将其转换为DIB位图,然后再保存呢???哪位高手遇到过类似的情况,请不吝赐教。如果有相应的代码,能不能分享一下。