为什么Graphics :: DrawString绘制misc字符?

时间:2012-04-09 00:21:32

标签: c++ gdi+ gdi

我正在尝试使用GDI +在图像上绘制文本,但是,我注意到使用DrawString(...)有我的文本,后面跟着几个misc字符(看起来像是日文)。这些字符仅在使用DrawString时显示,我注意到将Bitmap保存到文件中。有谁知道这可能导致什么?我的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 个答案:

答案 0 :(得分:3)

您应该阅读Graphics::DrawString功能的文档。

第二个参数应为:

  

整数,指定字符串数组中的字符数。如果字符串以空值终止,则length参数可以设置为-1。