CDC::Arc
Consente di tracciare un arco ellittico.
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
);
Parametri
x1
Specifica la coordinata x dell'angolo superiore sinistro del rettangolo di delimitazione (in unità logiche).y1
Specifica la coordinata y dell'angolo superiore sinistro del rettangolo di delimitazione (in unità logiche).x2
Specifica la coordinata x l'angolo inferiore destro del rettangolo di delimitazione (in unità logiche).y2
Specifica la coordinata y l'angolo inferiore destro del rettangolo di delimitazione (in unità logiche).x3
Specifica la coordinata x del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo passaggio non deve rientrare esattamente nell'arco.y3
Specifica la coordinata y del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo passaggio non deve rientrare esattamente nell'arco.x4
Specifica la coordinata x del punto in cui è definito endpoint dell'arco (in unità logiche). Questo passaggio non deve rientrare esattamente nell'arco.y4
Specifica la coordinata y del punto in cui è definito endpoint dell'arco (in unità logiche). Questo passaggio non deve rientrare esattamente nell'arco.lpRect
Specifica il rettangolo di delimitazione (in unità logiche). È possibile passare LPRECT o un oggetto CRect per questo parametro.ptStart
Specifica le coordinate x e y del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo passaggio non deve rientrare esattamente nell'arco. È possibile passare una struttura QUESTION o un oggetto CPoint per questo parametro.ptEnd
Specifica le coordinate x e y del punto che definisce il punto finale dell'arco (in unità logiche). Questo passaggio non deve rientrare esattamente nell'arco. È possibile passare una struttura di punti o un oggetto CPoint per questo parametro.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario 0.
Note
L'arco tracciato utilizzando la funzione è un segmento di un'ellisse definita dal rettangolo di delimitazione specificato.
Il punto iniziale dell'arco è il punto in cui un raggio tracciato dal centro del rettangolo di delimitazione dal punto iniziale specificata interseca l'ellisse. Il punto finale dell'arco è il punto in cui un raggio tracciato dal centro del rettangolo di delimitazione dal punto finale specificato interseca l'ellisse. L'arco viene disegnato in un senso antiorario. Poiché un arco non è una figura chiusa, non viene soddisfatta. La larghezza e l'altezza del rettangolo devono essere maggiori di 2 unità e meno di 32.767 unità.
Esempio
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);
}
Requisiti
Header: afxwin.h