Шаг 774 - CDC::RoundRect

BOOL RoundRect( int x1, int y1, int x2, int y2, int x3, int y3 );
BOOL RoundRect( LPCRECT lpRect, POINT point );

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

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

Замечания
Выводит прямоугольник с округленными углами, используюя текущее перо. Прямоугольника заполнен, используя текущую кисть.
Рисунок, который эта функция выводит, расширяет до, но не включает право и нижнюю часть координат. Это означает, что высота рисунка - y2 - y1, и ширина рисунка - x2 - x1. Высота и ширина ограничительного прямоугольника должна быть большая чем 2 модуля и меньше чем 32,767 модуля.

Пример

void CMyView::OnDraw(CDC* pDC)
{
	// Создайте и выберите твердую синюю кисть
	CBrush brushBlue(RGB(0, 0, 255));
	CBrush* pOldBrush = pDC->SelectObject(&brushBlue);

	//Создайте и выберите толстое, черное перо
	CPen penBlack;
	penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
	CPen* pOldPen = pDC->SelectObject(&penBlack);

	// Получите прямоугольник пользователя
	CRect rect;
	GetClientRect(rect);

	// Сократите на 20 пикселей в каждом направлении
	rect.DeflateRect(20, 20);

	// Вывести толстый черный прямоугольник, заполненный синим
	// Углы, округленные в радиусе с 17 модулями. Примечание это
	// Радиус три или меньше -   потому что
	// Перо - три широкие модуля.
	pDC->RoundRect(rect, CPoint(17, 17));

	// Верните старые объекты
	pDC->SelectObject(pOldBrush);
	pDC->SelectObject(pOldPen);
}

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