请教GDI+输出BMP的问题?

mickyo 2011-01-11 05:40:33
我用如下代码在DC上输出了文本,我希望输出为 32 位的BMP,或者 二值位图.
结果输出的是一块 32 位的全黑 BMP

LOGFONT logfont;
logfont.lfHeight=200;
logfont.lfWidth=200;
logfont.lfWeight=FW_BLACK;
logfont.lfCharSet=DEFAULT_CHARSET;
logfont.lfClipPrecision=CLIP_DEFAULT_PRECIS;
logfont.lfEscapement=0;
strcpy(logfont.lfFaceName,"华文彩云"); //注意如此赋值
logfont.lfItalic=FALSE;
logfont.lfOrientation=0;
logfont.lfPitchAndFamily=DEFAULT_PITCH|FF_DONTCARE;
logfont.lfQuality=DEFAULT_QUALITY;
logfont.lfStrikeOut=FALSE;
logfont.lfUnderline=FALSE;

CPaintDC dc(this);
Gdiplus::Graphics graphics(dc.m_hDC);
Gdiplus::Font font(dc.m_hDC,&logfont);
Gdiplus::StringFormat stringFormat;
stringFormat.SetAlignment(StringAlignmentNear);
Gdiplus::PointF pointF(2.0f, 2.0f);
Gdiplus::SolidBrush solidBrush(Gdiplus::Color(255, 0, 0)); // GDI+ BRUSH 类
graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);
graphics.DrawString(L"你you!", -1, &font, pointF,&stringFormat, &solidBrush);

SizeF layoutSize(0, 0);
SizeF GetSize;
graphics.MeasureString(L"你you!", -1, &font, layoutSize, &stringFormat, &GetSize);
graphics.DrawRectangle(&Pen(Color(191, 36, 71)), Rect(2, 2, GetSize.Width, GetSize.Height));


Gdiplus::Bitmap bitmap(GetSize.Width, GetSize.Height,&graphics);
HBITMAP hbit;
bitmap.GetHBITMAP(NULL,&hbit);
CImage image2;
image2.Attach(hbit);
image2.Save("mytest.bmp");
...全文
87 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
见习学术士 2011-01-15
  • 打赏
  • 举报
回复
是否初始化GDI+

// Initialize GDI+
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
Eleven 2011-01-15
  • 打赏
  • 举报
回复

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧