Шаг 743 - 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 );

Возвращаемое значение
Отлично от нуля, если функция успешна, иначе 0.

Параметры
x1
Определяет x-координату левого верхнего угла ограничительного прямоугольника (в логических модулях).
y1
Определяет y-координату левого верхнего угла ограничительного прямоугольника (в логических модулях).
x2
Определяет x-координату нижнего правого угла ограничительного прямоугольника (в логических модулях).
y2
Определяет y-координату нижнего правого угла ограничительного прямоугольника (в логических модулях).
x3
Определяет x-координату отметки, которая определяет отправную точку дуги (в логических модулях). Эта отметка не должна найтись точно на дуге.
y3
Определяет y-координату отметки, которая определяет отправную точку дуги (в логических модулях). Эта отметка не должна найтись точно на дуге.
x4
Определяет x-координату отметки, которая определяет оконечную точку дуги (в логических модулях). Эта отметка не должна найтись точно на дуге.
y4
Определяет y-координату отметки, которая определяет оконечную точку дуги (в логических модулях). Эта отметка не должна найтись точно на дуге.
lpRect
Определяет ограничительный прямоугольник (в логических модулях). Вы можете передавать или LPRECT или объект CRect для этого параметра.
ptStart
Определяет x- и y-координату отметки, которая определяет отправную точку дуги (в логических модулях). Эта отметка не должна найтись точно на дуге. Вы можете передавать или структуру POINT или объект CPoint для этого параметра.
ptEnd
Определяет x- и y-координату отметки, которая определяет отметку окончания дуги (в логических модулях). Эта отметка не должна найтись точно на дуге. Вы можете передавать или структуру POINT или объект CPoint для этого параметра.

Замечания
Выводит эллиптическую дугу. При выводе дуги используеться функция - сегмент эллипса, определенного определенным ограничительным прямоугольником.
Фактическая отправная точка дуги - отметка, в которой луч, выведенный из центра ограничительного прямоугольника через определенную отправную точку пересекает эллипс. Фактическая отметка окончания дуги - отметка, в которой луч, выведенный из центра ограничительного прямоугольника через определенную отметку окончания пересекает эллипс. Дуга выведена в направлении против часовой стрелки . Так как дуга - не закрытый рисунок, она не заполнена. И ширина и высота прямоугольника должна быть большая чем 2 модуля и меньше чем 32,767 модуля.

Пример

void CCurvesView::OnDraw(CDC* pDC)
{
	// Заполнить клиентскую область тонким кругом. круг
	// внутри не заполнен. Периметр круга
	// синий с 6 часов к 3 часам и красный от 3
	// часов к 6 часам.

	// Получите клиентскую область.
	CRect rectClient;
	GetClientRect(rectClient);

	// Делайте пару из перьев.
	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));

	// Вывести с 3 часов к 6 часам, против часовой стрелки,
	// В синем пере.

	pOldPen = pDC->SelectObject(&penBlue);

	pDC->Arc(rectClient,
		CPoint(rectClient.right, rectClient.CenterPoint().y),
		CPoint(rectClient.CenterPoint().x, rectClient.right));

	// Вывести с 6 часов к 3 часам, против часовой стрелки,
	// В красном пере.
	pDC->SelectObject(&penRed);

	// Хранить те же самые параметры, но обратить начало
	// и конечные точки.
	pDC->Arc(rectClient,
		CPoint(rectClient.CenterPoint().x, rectClient.right),
		CPoint(rectClient.right, rectClient.CenterPoint().y));

	// Восстановите предыдущее перо.
	pDC->SelectObject(pOldPen);
}

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 1.02.2002