为啥 Graphics::DrawString 绘制杂项字符?
Posted
技术标签:
【中文标题】为啥 Graphics::DrawString 绘制杂项字符?【英文标题】:Why is Graphics::DrawString drawing misc characters?为什么 Graphics::DrawString 绘制杂项字符? 【发布时间】:2012-04-09 00:21:32 【问题描述】:我正在尝试使用 GDI+ 将文本绘制到图像上,但是,我注意到 DrawString(...) 有我的文本,然后是几个杂项字符(看起来可能像日语)。这些字符仅在使用 DrawString 时出现,我注意到通过将位图保存到文件中。有谁知道可能是什么原因造成的?我的 GDI 代码是
#include <windows.h>
#include <Gdiplus.h>
using namespace Gdiplus;
int main(void)
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
Font* myFont = new Font(L"Times New Roman", 10);
Bitmap* characterBitmap = new Bitmap(256, 256, PixelFormat32bppARGB);
Graphics* g = new Graphics(characterBitmap);
g->Clear(Color::Transparent);
SolidBrush* myBrush = new SolidBrush(Color::Black);
g->DrawString(L"TEST", 48, myFont, PointF(0, 0), myBrush);
CLSID pngClsid;
GetEncoderClsid(L"image/png", &pngClsid);
characterBitmap->Save(L"test.png", &pngClsid, NULL);
GdiplusShutdown(gdiplusToken);
return 0;
【问题讨论】:
【参考方案1】:您应该阅读Graphics::DrawString
函数的文档。
第二个参数应该是:
整数,指定字符串数组中的字符数。如果字符串以 null 结尾,则长度参数可以设置为 –1。
【讨论】:
以上是关于为啥 Graphics::DrawString 绘制杂项字符?的主要内容,如果未能解决你的问题,请参考以下文章
为啥字体大小为 101 的 Graphics2D.drawString 的字母“o”会损坏?
Graphics DrawString 画出字体怎么不一样大啊?
如何在 Java 中居中 Graphics.drawString()?