FillPathで、パスの中を塗りつぶす。
FillPath function (wingdi.h) - Win32 apps | Microsoft Docs
パス
WM_PAINTで、
case WM_PAINT:
{
HDC hDC;
PAINTSTRUCT ps;
BOOL bRet;
hDC = BeginPaint(hwnd, &ps);
TextOut(hDC, 50, 50, _T("ABCDE"), _tcslen(_T("ABCDE")));
bRet = BeginPath(hDC);
if (bRet){
HFONT hFont, hOldFont;
SetBkMode(hDC, TRANSPARENT);
hFont = CreateFont(48, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, 0, NULL);
hOldFont = (HFONT)SelectObject(hDC, hFont);
TextOut(hDC, 50, 100, _T("FGHIJ"), _tcslen(_T("FGHIJ")));
SelectObject(hDC, hOldFont);
DeleteObject(hFont);
}
EndPath(hDC);
StrokePath(hDC);
HBRUSH hBrush, hOldBrush;
hBrush = CreateSolidBrush(RGB(0xff, 0x0, 0x0));
hOldBrush = (HBRUSH)SelectObject(hDC, hBrush);
FillPath(hDC);
SelectObject(hDC, hOldBrush);
DeleteObject(hBrush);
EndPaint(hwnd, &ps);
}
break;
TRANSPARENTにして背景を透過、フォントも48と大きくした。
FillPathの部分は、EndPathや、StrokePathの後ろに書いている。
赤いブラシを作って、選択して、その色で塗りつぶすのだが、
輪郭描画はあるのに、塗りつぶされない。
どうも、同時には出来ない模様。
StrokePathをコメントアウトすると、
輪郭描画はされなくなったが、赤いブラシでの塗りつぶしはされるようになった。
Sample/winapi/FillPath/FillPath/src/FillPath at master · bg1bgst333/Sample · GitHub