我要把bmp黑白二值位图转成emf、wmf,现在转成emf没有问题。但转wmf有问题(本来是黑实心的图形,但转完后,是条图了,图形变大了)。用msdn上的ConvertEMFtoWMF,也是不行(在黑实心的图形中有白条)。
那位有解决的办法,或有成功的例子或源码。
那位有解决的办法,或有成功的例子或源码。
解决方案 »
- WINDOWPLACEMENT的疑问
- 用MFC如何获取某论坛的用户的用户名呢?
- 问个简单的社区功能,怎样搜索已解决的问题
- 请问如何在CView类里定义GDI+的Graphics对象和Image对象?
- 请问如何获得网站验证码的字符串的提取?
- 我想用钩子方法,当自己程序crash的时候,capture 系统的错误信息。以便分析。
- 高手看过来 ---- List Ctrl在大图标显示的时候如何分行
- 请教如何通过ole db 操作含有int类型的字段(自增的id)的表?
- Project-->Settings->serttings for 只有 win32-release 是什么原因?
- 高分求建议,来者有分!!!决不食言
- 我在VC中使用TreeView控件,怎么修改它的属性就能达到资源管理器的功能,至少能列出目录,至于打不打开无所谓?
- 用odbc在向sql 2000中插入记录时,sql 2000掉电,会不会出现update()函数成功,但实际数据没有插入的情况?
HRESULT AnsiToUnicode(LPCSTR pszA, LPOLESTR* ppszW)
{
ULONG cCharacters;
DWORD dwError;
if (NULL == pszA)
{
*ppszW = NULL;
return NOERROR;
}
cCharacters = strlen(pszA)+1;
*ppszW = (LPOLESTR) CoTaskMemAlloc(cCharacters*2);
if (NULL == *ppszW)
return E_OUTOFMEMORY;
if (0 == MultiByteToWideChar(CP_ACP, 0, pszA, cCharacters,*ppszW, cCharacters))
{
dwError = GetLastError();
CoTaskMemFree(*ppszW);
*ppszW = NULL;
return HRESULT_FROM_WIN32(dwError);
}
return NOERROR;
}bool TransBMPToGIF89(LPSTR lpSrcFileName,LPSTR lpDstFileName)//if pass a name fifa.bmp then save as fifa.gif
{
if(lpSrcFileName == NULL || lpDstFileName == NULL)
return false;
using namespace Gdiplus;
CLSID encoderClsid;
Status stat;
LPOLESTR lpwStr;
if(AnsiToUnicode(lpSrcFileName,&lpwStr)!=NOERROR)
return false;
Image* image = Image::FromFile(lpwStr,FALSE);
CoTaskMemFree(&lpwStr);
GetEncoderClsid(L"image/gif", &encoderClsid);
if(AnsiToUnicode(lpDstFileName,&lpwStr)!=NOERROR)
return false;
stat = image->Save(lpwStr, &encoderClsid, NULL);
CoTaskMemFree(&lpwStr);
bool bRet = false;
if(stat == Ok)
bRet = true;
else
bRet = false;
delete image;
return bRet;
}
没有哇!?
if have not success change from bmp->wmf
maybe you should set
GetEncoderClsid(L"image/wmf", &encoderClsid);
那里有下载,我用google没搜到。