Шаг 349 - Пути(path) CDC

Идея путей в том путь это набор фигур или форм, которые могут быть объединены для рисования других фигур или для создания областей обрезки. Создается путь путем вызова функции:

CDC::BeginPath
BOOL BeginPath( );

Дальше следуют команды, а заканчивается путь вызовом.

CDC::EndPath
BOOL EndPath( );

Давайте создадим приложение MFC AppWizard с именем TTestPath как SDI. Естественно, что нас будет интересовать функция OnDraw для работы с CDC.

////////////////////////
// CTestPathView drawing

void CTestPathView::OnDraw(CDC* pDC)
{
	CTestPathDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

Мы изменим ее для того, что бы с помощью пути задать область обрезки.

///////////////////////////
// CTestPathView drawing

void CTestPathView::OnDraw(CDC* pDC)
{
	CTestPathDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	pDC->BeginPath();			 
	pDC->MoveTo(CPoint(10,10));
	pDC->LineTo(CPoint(100,10));
	pDC->LineTo(CPoint(100,100));
	pDC->LineTo(CPoint(10,100));
	pDC->LineTo(CPoint(10,10)); 
	pDC->EndPath();
	pDC->SelectClipPath(RGN_COPY);
	CPen penRed(PS_SOLID,1,RGB(255,0,0));
	CPen *oldPen;
	oldPen=pDC->SelectObject(&penRed);
	pDC->Rectangle(CRect(CPoint(10,10),CPoint(100,100))); 
	for (int x=0;x<100;x++)
	{
		pDC->MoveTo(10,10);
		pDC->LineTo(200,x*20);
	}
	pDC->SelectObject(oldPen); 
}

Здесь мы создаем область обрезки в виде прямоугольника, а потом обрисовываем эту область и начинаем заполнять линиями. Результат будет вот такой.

349_1.gif (3443 b)


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.