VC6.0 用GDI+中的BItmap保存位图,出错!!!
LPCTSTR path =(LPCTSTR)wparam;//保存路径
StringFormat strformat;//字体格式
strformat.SetAlignment(StringAlignmentCenter);
strformat.SetLineAlignment(StringAlignmentCenter);
Font m_font(L"宋体",10);
Bitmap bm(300,1000);//创建一个位图对象
CLSID clsid;
RectF rt[] = { RectF(0,0,30,20) , RectF(80,0,50,20) , RectF(80,0,50,20), RectF(130,0,50,20) , RectF(180,0,50,20) } ;
char cStyle[] = "image/bmp";
WCHAR WStyle[30] = {0};
MultiByteToWideChar(CP_ACP,0,cStyle,strlen(cStyle),WStyle,30);
GetEncoderClsid(WStyle ,&clsid );//获得WStyle 的ID
int err = -1;
Graphics *gs = Graphics::FromImage(&bm);
err = gs->Clear(Color(255,255,255));
err = gs->FillRectangles(&SolidBrush(Color(0,0,255)) ,rt,5);
err = gs->DrawRectangles(&Pen(Color::Black),rt,5);
err = gs->DrawString(L"Name",-1,&m_font,rt[0],&strformat,&SolidBrush(Color::Black) );
err = gs->DrawString(L"SN",-1,&m_font,rt[1],&strformat,&SolidBrush(Color::Black));
err = gs->DrawString(L"Size",-1,&m_font,rt[2],&strformat,&SolidBrush(Color::Black) );
err = gs->DrawString(L"Length",-1,&m_font,rt[3],&strformat,&SolidBrush(Color::Black));
err = gs->DrawString(L"Location",-1,&m_font,rt[4],&strformat,&SolidBrush(Color::Black) );
Bitmap bt( AfxGetApp()-> m_hInstance, (WCHAR *)(LPCTSTR)MAKEINTRESOURCE(IDB_DIM));
Bitmap *pbt = bt.Clone(0,0,48,48,0);
err = gs->DrawImage(pbt,0,22);
delete pbt;
pbt = NULL;
WCHAR wpath[256] = {0};
MultiByteToWideChar(CP_ACP,0,path,strlen(path),wpath,256);
err = bm.Save(wpath,&clsid);
delete gs;
ShellExecute( NULL,"open",path,NULL,NULL,SW_SHOW );//打开文件夹
东西都是测试出来的!!也许是VC6.0的bug
[解决办法]
是“err = bm.Save(wpath,&clsid);” 这句的问题吗?
[解决办法]
"也是执行完 return 后 bmp中的数据就没有了"
哪个 bmp ?