#include <windows.h>
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")
VOID OnPaint(HDC hdc) {
   Graphics     graphics(hdc);
   Pen          pen(Color(255, 0, 0, 255));
   FontFamily   fontFamily(L"宋体");
   Font         font(&fontFamily, 12, FontStyleRegular, UnitPixel);
   PointF       pointF1(30.0f, 60.0f),pointF2(230.0f, 60.0f);
   SolidBrush   solidBrush(Color(255, 0, 0, 255));
   StringFormat stringFormat;
   WCHAR testString[] = L"Hello034∠你好";   stringFormat.SetFormatFlags(StringFormatFlagsDirectionVertical);   graphics.SetSmoothingMode(SmoothingModeDefault);
   graphics.DrawLine(&pen, 0, 0, 200, 100);
   graphics.DrawEllipse(&pen, 10, 10, 190, 90);
   graphics.SetTextRenderingHint(TextRenderingHintSystemDefault);
   graphics.DrawString(testString, -1, &font, pointF1, &stringFormat, &solidBrush);
   graphics.SetSmoothingMode(SmoothingModeHighQuality);
   graphics.DrawLine(&pen, 200, 0, 400, 100);
   graphics.DrawEllipse(&pen, 210, 10, 190, 90);
   graphics.SetTextRenderingHint(TextRenderingHintAntiAlias);
   graphics.DrawString(testString, -1, &font, pointF2, &stringFormat, &solidBrush);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
   HDC          hdc;
   PAINTSTRUCT  ps;   switch(message) {
   case WM_PAINT:
      hdc = BeginPaint(hWnd, &ps);
      OnPaint(hdc);
      EndPaint(hWnd, &ps);
      return 0;
   case WM_DESTROY:
      PostQuitMessage(0);
      return 0;
   default:
      return DefWindowProc(hWnd, message, wParam, lParam);
   }
}
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, INT iCmdShow) {
   HWND                hWnd;
   MSG                 msg;
   WNDCLASS            wndClass;
   GdiplusStartupInput gdiplusStartupInput;
   ULONG_PTR           gdiplusToken;   GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);   wndClass.style          = CS_HREDRAW | CS_VREDRAW;
   wndClass.lpfnWndProc    = WndProc;
   wndClass.cbClsExtra     = 0;
   wndClass.cbWndExtra     = 0;
   wndClass.hInstance      = hInstance;
   wndClass.hIcon          = LoadIcon(NULL, IDI_APPLICATION);
   wndClass.hCursor        = LoadCursor(NULL, IDC_ARROW);
   wndClass.hbrBackground  = (HBRUSH)GetStockObject(WHITE_BRUSH);
   wndClass.lpszMenuName   = NULL;
   wndClass.lpszClassName  = TEXT("GettingStarted");   RegisterClass(&wndClass);   hWnd = CreateWindow(
      TEXT("GettingStarted"),   // window class name
      TEXT("Getting Started"),  // window caption
      WS_OVERLAPPEDWINDOW,      // window style
      CW_USEDEFAULT,            // initial x position
      CW_USEDEFAULT,            // initial y position
      CW_USEDEFAULT,            // initial x size
      CW_USEDEFAULT,            // initial y size
      NULL,                     // parent window handle
      NULL,                     // window menu handle
      hInstance,                // program instance handle
      NULL);                    // creation parameters   ShowWindow(hWnd, iCmdShow);
   UpdateWindow(hWnd);   while(GetMessage(&msg, NULL, 0, 0)) {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }   GdiplusShutdown(gdiplusToken);   return 0;
}