CDC::Arc
楕円の円弧を描画します。
BOOL Arc(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4
);
BOOL Arc(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd
);
パラメーター
x1
外接する四角形の左上隅の x 座標を指定します (論理単位で)。y1
外接する四角形の左上隅の y 座標を指定します (論理単位で)。x2
外接する四角形の右上隅の x 座標を指定します (論理単位で)。y2
外接する四角形の右下隅の y 座標を指定します (論理単位で)。x3
円弧の開始点を定義する点の x 座標を指定します (論理単位で)。 このポイントは円弧に対応する必要はありません。y3
円弧の開始点を定義する位置の y 座標を指定します (論理単位で)。 このポイントは円弧に対応する必要はありません。x4
円弧のエンドポイントを定義する点の x 座標を指定します (論理単位で)。 このポイントは円弧に対応する必要はありません。y4
円弧のエンドポイントを定義する位置の y 座標を指定します (論理単位で)。 このポイントは円弧に対応する必要はありません。lpRect
外接する四角形を指定します (論理単位で)。 このパラメーターの LPRECT か CRect のオブジェクトを渡すこともできます。ptStart
円弧の開始点を定義する点の x 座標と y 座標を指定します (論理単位で)。 このポイントは円弧に対応する必要はありません。 このパラメーターの [ポイント] の構造や CPoint のオブジェクトを渡すこともできます。ptEnd
円弧の終了点を定義する点の x 座標と y 座標を指定します (論理単位で)。 このポイントは円弧に対応する必要はありません。 このパラメーターの [ポイント] の構造や CPoint のオブジェクトを渡すこともできます。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
関数を使用して描画円弧は、指定した外接する四角形によって定義された楕円のセグメントです。
円弧の点を開始する実際に外接する四角形の中央から指定した開始点から描画された射線が楕円に共通する点です。 円弧の実際の終了点は外接する四角形の中央から指定した終了点から描画された射線が楕円に共通する点です。 円弧は反時計回りで描画されます。 円弧は閉じた図形ではないため、満たされません。 四角形の幅と高さはどちらも 2 単位、32,767 未満の単位を超えることはできません。
使用例
void CDCView::DrawArc(CDC* pDC)
{
// Fill the client area with a thin circle. The circle's
// interior is not filled. The circle's perimeter is
// blue from 6 o'clock to 3 o'clock and red from 3
// o'clock to 6 o'clock.
// Get the client area.
CRect rectClient;
GetClientRect(rectClient);
// Make a couple of pens.
CPen penBlue;
CPen penRed;
CPen* pOldPen;
penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));
// Draw from 3 o'clock to 6 o'clock, counterclockwise,
// in a blue pen.
pOldPen = pDC->SelectObject(&penBlue);
pDC->Arc(rectClient,
CPoint(rectClient.right, rectClient.CenterPoint().y),
CPoint(rectClient.CenterPoint().x, rectClient.right));
// Draw from 6 o'clock to 3 o'clock, counterclockwise,
// in a red pen.
pDC->SelectObject(&penRed);
// Keep the same parameters, but reverse start
// and end points.
pDC->Arc(rectClient,
CPoint(rectClient.CenterPoint().x, rectClient.right),
CPoint(rectClient.right, rectClient.CenterPoint().y));
// Restore the previous pen.
pDC->SelectObject(pOldPen);
}
必要条件
ヘッダー: afxwin.h