首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于GDI+在win7 下绘制文字正常 在xp下绘制文字无法显示有关问题,请问大神,

2013-12-28 
关于GDI+在win7 下绘制文字正常 在xp下绘制文字无法显示问题,请教大神,在线等!!!本帖最后由 loveanybody

关于GDI+在win7 下绘制文字正常 在xp下绘制文字无法显示问题,请教大神,在线等!!!
本帖最后由 loveanybody 于 2013-12-26 11:17:22 编辑 文字绘制如下:
void CLoginDialog::DrawUI()
{
HDC hDC=::GetDC(m_hWnd);
HDC hMemDC=::CreateCompatibleDC(hDC);

BITMAPINFO bitmapinfo;
bitmapinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bitmapinfo.bmiHeader.biBitCount = 32;
bitmapinfo.bmiHeader.biHeight = m_pSrcImage->GetHeight();
bitmapinfo.bmiHeader.biWidth = m_pSrcImage->GetWidth();
bitmapinfo.bmiHeader.biPlanes = 1;
bitmapinfo.bmiHeader.biCompression=BI_RGB;
bitmapinfo.bmiHeader.biXPelsPerMeter=0;
bitmapinfo.bmiHeader.biYPelsPerMeter=0;
bitmapinfo.bmiHeader.biClrUsed=0;
bitmapinfo.bmiHeader.biClrImportant=0;
bitmapinfo.bmiHeader.biSizeImage = bitmapinfo.bmiHeader.biWidth * bitmapinfo.bmiHeader.biHeight * bitmapinfo.bmiHeader.biBitCount / 8;

HBITMAP hBitmap=::CreateDIBSection (hMemDC,&bitmapinfo, 0,NULL, 0, 0);
HBITMAP hOldBitmap = (HBITMAP)::SelectObject (hMemDC,hBitmap);
  
    //画出各个界面元素----------------------  
Graphics g(hMemDC);
g.DrawImage(m_pSrcImage,RectF(0,0,m_pSrcImage->GetWidth(),m_pSrcImage->GetHeight()),0,0,m_pSrcImage->GetWidth(),m_pSrcImage->GetHeight(),UnitPixel,NULL,NULL,NULL);

FontFamily* fontFamily = new FontFamily(L"微软雅黑");//选择一种字体

Gdiplus::SolidBrush* company_brush = new Gdiplus::SolidBrush(Color(255,24,120,197));
Gdiplus::Font* company_font = new Gdiplus::Font(fontFamily,11,FontStyleRegular,UnitPoint);
        g.DrawString(L"Hello Word!",-1,company_font,PointF(335,346),company_brush);

delete fontFamily;
delete company_brush;
delete company_font;

   //设置透明窗口-------------------------------------------------
CPoint DestPt(0,0);
CSize psize(m_pSrcImage->GetWidth(),m_pSrcImage->GetHeight());
BLENDFUNCTION blendFunc32bpp;
blendFunc32bpp.AlphaFormat = AC_SRC_ALPHA;
blendFunc32bpp.BlendFlags = 0;
blendFunc32bpp.BlendOp = AC_SRC_OVER;
blendFunc32bpp.SourceConstantAlpha = 255;
::UpdateLayeredWindow(m_hWnd,hDC,NULL,&psize,hMemDC,&DestPt,0,&blendFunc32bpp,ULW_ALPHA);
//释放资源-------------------------------------------------
::SelectObject (hMemDC,hOldBitmap);
::DeleteObject(hBitmap);
::DeleteDC(hMemDC);
::ReleaseDC(m_hWnd,hDC);
}
[解决办法]
如果xp下不能单步,那么输出一点日志来看看,到底是哪步函数调用失败了
[解决办法]
试试把 win7 的 gdiplus.dll 拷贝到 xp 下, 重新 regsrv32 gdiplus.dll 看看

热点排行