Визуализация контактных преобразований в среде Visual C++ 6
Категория реферата: Рефераты по информатике, программированию
Теги реферата: курсовые работы бесплатно, украинские рефераты
Добавил(а) на сайт: Chalyj.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 | Следующая страница реферата
где рРеn — указатель на объект-перо. Функция SelectObject возвращает указатель на предыдущий объект-перо, выбранный в объекте контекста устройства. Если перо ранее не выбиралось, это будет временный объект пера, заданного по умолчанию. Для выбора кисти вызывается функция SelectObject.
CBrush* SelectObject (CBrush* pBrush);
где pBrush — указатель на объект-кисть. Функция SelectObject возвращает указатель на ранее выбранную кисть. Если она ранее не выбиралась, то это будет временный объект для заданной по умолчанию кисти.
При вызове функции SelectObject для выбора пера или кисти нужно сохранить возвращаемый указатель. После вызова графических функций для отображения выводимой информации с использованием пера или кисти (что описано далее в этой же главе) удалите перо или кисть из объекта контекста устройства и вызовите функцию SelectObject для выбора предыдущего объекта.
Перо или кисть необходимо удалить из объекта контекста устройства, чтобы объект контекста устройства не хранил некорректный дескриптор после удаления объекта. При инициализации пера или кисти Windows добавляет дескриптор, сохраняемый внутри объекта. При выборе пера или кисти объект контекста устройства также сохраняет этот дескриптор. Когда объекты выходят за пределы области видимости или удаляются, деструктор объекта уничтожает дескриптор. Однако этот шаг не нужно выполнять, если объект контекста устройства удаляется до удаления объекта пера или кисти.
В моей программе будут рисоваться два эллипса, первый по формуле x2 y2
( --- --- =1 ; a2 b2 а второй, по формуле
x=a cos t
( y=b sin t
Вот функция, которая рисует оба эллипса: void CEllipseView::OnDraw(CDC* pDC)
{
CEllipseDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc); float x, y, t, PI = 3.1415926; for (x = -pDoc->A; x < pDoc->A; x+=0.005)
{ y = sqrt(abs((1.0 - (x*x)/(pDoc->A*pDoc->A))*(pDoc->B*pDoc->B))); pDC->SetPixel(x*5+pDoc->A*5+10, y*5+pDoc->B*5+10, RGB(0xFF,0,0)); y = -sqrt(abs((1.0 - (x*x)/(pDoc->A*pDoc->A))*(pDoc->B*pDoc->B))); pDC->SetPixel(x*5+pDoc->A*5+10, y*5+pDoc->B*5+10, RGB(0xFF,0,0));
} for (t = -PI; t < PI; t+=0.005)
{ x = pDoc->Ac * cos(t); y = pDoc->Bc * sin(t); pDC->SetPixel(x*5+MAX(pDoc->A,pDoc->Ac)*15+20, y*5+MAX(pDoc->B,pDoc->Bc)*5+10, RGB(0,0x20,0x80));
}
Для передачи параметров в функцию рисования я создал два диалоговых
окна, одно для первой формулы (первого эллипса), другое – для второй
формулы (второго эллипса). При нажатии на иконки эллипсов появляются эти
диалоговые окна и предлагается ввести соответствующие параметры формулы
эллипса. Диалоговые окна вызываются в файле EllipseDoc.Cpp, вот функции
вызова обоих диалоговых окон: void CEllipseDoc::OnNewEllipseProperties()
{
CEditEllipseProperties dlg; dlg.m_A = A; dlg.m_B = B; dlg.DoModal();
A = dlg.m_A;
B = dlg.m_B;
UpdateAllViews(NULL);
}
void CEllipseDoc::OnEditEllipseProperties2()
{
CEditEllipseProperties dlg; dlg.m_A = Ac; dlg.m_B = Bc; dlg.DoModal();
Ac = dlg.m_A;
Bc = dlg.m_B;
UpdateAllViews(NULL);
}
Глава 3.Печать и предварительный просмотр
Рекомендуем скачать другие рефераты по теме: российская федерация реферат, изложение.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 | Следующая страница реферата