Шаг 769 - CDC::Pie

BOOL Pie( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 );
BOOL Pie( LPCRECT lpRect, POINT ptStart, POINT ptEnd );

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

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

Замечания
Выводит сектор круга, выводя краткую дугу, чей центр и две оконечных точки соединены линиями. Центр дуги - центр ограничительного прямоугольника, определенного x1, y1, x2, и y2 (или lpRect). Точки начала и конца дуги определены x3, y3, x4, и y4 (или ptStart и ptEnd).
Дуга выведена с выбранным пером, перемещающимся в против часовой стрелки направление. Две дополнительных линии выведены от каждой оконечной точки до центра дуги. Сектор круга заполнен текущей кистью. Если x3 равняется x4, и y3 равняется y4, результат - эллипс с одиночной линией из центра эллипса к (x3, y3) или (x4, y4).
Рисунок, выведенный этой функцией расширяет до, но не включает право и нижнюю часть координат. Это означает, что высота рисунка - y2 - y1, и ширина рисунка - x2 - x1. Ширина и высота ограничительного прямоугольника должна быть большая чем 2 модуля и меньше чем 32,767 модуля.

Пример

void CCurvesView::OnDraw(CDC* pDC)
{
	// Заполнить клиентскую область простой круговой диаграммой. A
	// большая синяя пластина покрывает 75 % круга, из
	// 6 часов к 3 часам. Эта часть заполненный
	//  синим и имеет синий край. Дальнейшее пребывание 25 %
	// Заполнен красным, диагональной штриховкой, и
	// красный край.


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

	// Делайте пару из перьев и подобных кистей.
	CPen penBlue, penRed;
	CBrush brushBlue, brushRed;
	CBrush* pOldBrush;
	CPen* pOldPen;

	brushBlue.CreateSolidBrush(RGB(0, 0, 255));
	brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
	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);
	pOldBrush = pDC->SelectObject(&brushBlue);

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

	// Вывести остающуюся пластину четверти с 6 часов
	// К 3 часам, против часовой стрелки, в красном пере с
	// заштрихованной кистью.
	pDC->SelectObject(&penRed);
	pDC->SelectObject(&brushRed);

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

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

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