2012-04-09 5 views
1

Ich versuche, GDI + zu verwenden, um Text auf ein Bild zu zeichnen, jedoch merke ich, dass es mit DrawString (...) meinen Text gibt, gefolgt von mehreren verschiedenen Zeichen (es sieht vielleicht japanisch aus). Diese Zeichen werden nur angezeigt, wenn DrawString verwendet wird. Dies wird durch Speichern der Bitmap in einer Datei angezeigt. Weiß jemand, was das verursacht? Mein GDI Code istWarum zeichnet Graphics :: DrawString verschiedene Zeichen?

#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; 
} 

Antwort

3

Sie sollten die Dokumentation der Graphics::DrawString Funktion lesen.

sollte der zweite Parameter sein:

Ganzzahl, die die Anzahl der Zeichen in dem String-Array angibt. Der length-Parameter kann auf -1 gesetzt werden, wenn die Zeichenfolge null terminiert ist.