図形の描画2
BOOL Pie( HDC hdc, int left, int top, int right, int bottom, int xr1, int yr1, int xr2, int yr2 ); 扇を描画する。 成功した場合は0以外を、失敗した場合は0を返す。 BOOL Arc( HDC hdc, int left, int top, int right, int bottom, int xr1, int yr1, int xr2, int yr2 ); 円弧を描画する。 成功した場合は0以外を、失敗した場合は0を返す。 BOOL Chord( HDC hdc, int left, int top, int right, int bottom, int xr1, int yr1, int xr2, int yr2 ); 弦を描画する。 成功した場合は0以外を、失敗した場合は0を返す。
これらの関数は同じ形状の図形を定義するので、引数の意味は三つとも同じです。 扇は円の中心から円周への二本の線と孤を描画します。 円弧は円周の孤のみを描画します。 弦は二本の線が円周に接する点同士を結ぶ線と孤を描画します。
「円の中心から円周への二本の線」の一本目は引数 xr1 と yr1 、二本目は xr2 と yr2 で定義します。 一本目から反時計回りに二本目の間が描画されます。 これらの座標は円周上を指定する必要はなく、円周に接する長さに自動で伸縮されます。
//ウィンドウプロシージャ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) < HDC hdc; PAINTSTRUCT ps; POINT points[] = < < 60, 60 >, < 40, 130 >, < 60, 60 >, < 130, 50 >>; DWORD vertices[] = < 2, 2 >; int x, y; switch (message) < case WM_PAINT: //ウィンドウの描画 hdc = BeginPaint(hWnd, &ps); Rectangle(hdc, 10, 10, 110, 110); Ellipse(hdc, 10, 10, 110, 110); PolyPolyline(hdc, points, vertices, 2); TextOut(hdc, points[1].x, points[1].y, L"線1", 2); TextOut(hdc, points[3].x, points[3].y, L"線2", 2); x = 0; y = 170; TextOut(hdc, 30, 10 + y, L"Pie", 3); Pie(hdc, 10 + x, 10 + y, 110 + x, 110 + y, 40 + x, 130 + y, 130 + x, 50 + y); x = 100; y = 170; TextOut(hdc, 30 + x, 10 + y, L"Arc", 3); Arc(hdc, 10 + x, 10 + y, 110 + x, 110 + y, 40 + x, 130 + y, 130 + x, 50 + y); x = 200; y = 170; TextOut(hdc, 30 + x, 10 + y, L"Chord", 5); Chord(hdc, 10 + x, 10 + y, 110 + x, 110 + y, 40 + x, 130 + y, 130 + x, 50 + y); EndPaint(hWnd, &ps); break; case WM_DESTROY: //ウィンドウの破棄 PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); >return 0; >