求めたアウトラインをウィンドウに表示できる様な変換のコードを書いたので,その動作のテスト.
{
HWND hWnd = ::GetConsoleHwnd() ;
RECT rect = ::GetClientRect(hWnd) ;
POINT point= ::RECT_center(rect) ;
int ch = ::RECT_width(rect)/str.length()*10/7 ;
{
HDC hDC = ::GetDC(hWnd) ;
{
#define face_A _T("Arial")
#define face_U _T("Meiryo UI")
#define face_W _T("Wingdings")
{
::ClearWindow(hWnd) ;
int ry = -30 ;
tstring face_name = face_U ;
vv_PLF vv_plf= ::GetTTOutline(hDC,point,false,str.c_str(),face_name.c_str(),ch,0,0,ry,FW_DONTCARE) ;
v_Vd2A v_v2a = ::ToVd2A(vv_plf) ;
::PolyPolygon(hDC,v_v2a) ;
}
}
::ReleaseDC(hWnd,hDC) ;
}
}
::GetTTOutline の中では,文字の傾き,文字列の回転,Y の反転,表示位置の移動を行っている.
更に三角形に分割.
vv_PLF vv_plf= ::GetTTOutline(hDC,point,false,str.c_str(),face_name.c_str(),ch,0,0,ry,FW_DONTCARE) ;
// v_Vd2A v_v2a = ::ToVd2A(vv_plf) ;
v_Vd2A v_v2a = ::PLF_triangulation(vv_plf) ;