Cамоучитель по Visual Studio.Net

       

Задание координат полигонов является утомительным


Вспомогательные функции

Задание координат полигонов является утомительным занятием, поэтому мы, учитывая учебный характер приложения, создали три вспомогательные функции, которые позволяют быстро воспроизвести три различных полигона: звезду, треугольник и пятиугольник. Далее нам необходим немодальный диалог, с помощью которого пользователь сможет создать произвольное количество новых полигонов, выбирая их типы с помощью нестандартных кнопок и управляя атрибутами полигонов (цветом фона, цветом и толщиной пера) с помощью синхронизированных между собой элементов управления. Дополните файл ТгееОос.срр кодами еще трех функций:

void CPolygon::MakeStar()

{

m_Points.clear();

//====== Вспомогательные переменные

double pi = 4. * atan(l.), // Углы

al = pi / 10.,

а2 = 3. * al,

//====== 2 характерные точки

xl = cos (al),

yl = sin(al),



x2 = cos(a2),

y2 = sin(a2);

//=== Вещественные (World) координаты углов звезды m_Points.push_back(CDPoint(0., 1.));

m_Points.push_back(CDPoint <-x2, -y2));

m_Points.push_back(CDPoint( xl, yl) ) ;

m_Points.push_back(CDPoint(-xl, yl)) ;

m_Points.push_back(CDPoint( x2, -y2));

//====== Габариты звезды

m_ptLT = CDPoint(-xl, 1.);

m_ptRB = CDPoint( xl,-y2);

//====== Генерация треугольника

void CPolygon::MakeTria() {

m_Points.clear();

double pi = 4. * atand(1.);

a = pi / 6.;

x = cos (a) ;

у = sin(a);

m_Points.push_back (CDPoint(0., 1.));

m_Points,push_back (CDPoint(-x, -y) );

m_Points.push_back (CDPoint( x, -y));

m_ptLT = CDPoint (-x, 1.) ;

m_ptRB = CDPoint ( x,-y);

//====== Генерация пятиугольника

void CPolygon::MakePent()

{

m_Points.clear ();

double pi = 4. * atan(l.),

al = pi / 10.,

a2 - 3. * al,

xl = cos(al),

yl = sin(al),

x2 = cos(a2),

y2 = sin(a2);

// Вещественные (World) координаты углов пятиугольника m_Points.push_back(CDPoint (0 ., 1.));

m_Points.push_back(CDPoint(-xl, yl));

m_Points.push_back(CDPoint(-x2, -y2));

m_Points.push_back(CDPoint( x2, -y2));

m_Points.push_back(CDPoint( xl, yl));

m_ptLT = CDPoint(-xl, 1.);

m_ptRB = CDPoint( xl,-y2);

Содержание раздела