2020 ч а с т ь I молодой ученый
Download 7.93 Mb. Pdf ko'rish
|
moluch 292 ch1
часть создаваемого для этого класса дополнительного кода состоит из кода, позволяющего рисовать документ, пока- зывая его пользователю, а также обрабатывать вводимую пользователем информацию. В данной программе используется движение фигуры с ограничением движения по оси X и Y, поэтому диапазон движения ограничен: — переменная x должна лежать в диапазоне от 0 до crect.Width (Изменяемая ширина пользовательского окна); — переменная y должна лежать в диапазоне от 0 до crect.Height (Изменяемая высота пользовательского окна). Основной код будет написан в классе CKursovicView. Составим общий алгоритм программы: Начало OnGoBut t o1() myDraw() Конец x1=crect .Widt h()/ crect .Widh()+100; y1=crect .Height ()*4/ 5; 18 «Молодой учёный» . № 2 (292) . Январь 2020 г. Информационные технологии x1 и y1 — это координаты в пользовательском окне, от- носительно которых будет рисоваться самолет. Важно по- нимать, что координатная ось начинается в левом верхнем углу окна. То есть x1 это координата с левого края окна, прибавление ста пикселей необходимо, так как фигура ри- суется вокруг этой координаты, то есть имеет ширину. y1 это четыре пятых высоты — низ окна. Составим алгоритм главного метода, в котором будет происходить движение, myDraw(): Перейдем к коду. void CKursovicView::myDraw(CDC* pDC) //Движение самолета { CKursovicDoc * pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: добавьте здесь код отрисовки для соб- ственных данных CRect crect; CPen BlackPen, WhitePen; GetWindowRect(&crect); //Получение ширины и вы- соты пользовательского окна WhitePen.CreatePen(PS_SOLID, 100, RGB(255, 255, 255)); //создание белого пера BlackPen.CreatePen(PS_SOLID, 5, RGB(0, 0, 0)); // создание черного пера x1 = crect.Width() / crect.Width() + 100; y1 = crect.Height() * 4 / 5; pDC->SelectObject(&WhitePen); //выбор пера Подготовительные работы завершены, осталось нари- совать фигуру и осуществить движение. Для отрисовки создадим новый метод airplane(). Ри- сунок состоит из линий и нарисован относительно на- чальной координаты. void CKursovicView::airplane(CDC* pDC) //Прори- совка самолета { pDC->MoveTo(x1 + 100, y1–100); pDC->LineTo(x1–100, y1–100); pDC->LineTo(x1–40, y1–40); pDC->LineTo(x1–40, y1–20); pDC->LineTo(x1–20, y1–20); pDC->LineTo(x1, y1 + 60); pDC->LineTo(x1 + 100, y1–100); pDC->LineTo(x1–20, y1–20); pDC->LineTo(x1 + 100, y1–100); pDC->LineTo(x1–40, y1–20); pDC->LineTo(x1 + 100, y1–100); pDC->LineTo(x1–40, y1–40); } Теперь напишем код движения, для этого будем ри- совать фигуру, затем стирать ее с помощью белого пера, а затем снова рисовать со сдвигом в несколько пикселей. while (x1 < crect.Width() * 4 / 10) //разгон { pDC->SelectObject(&WhitePen); pDC->Rectangle(x1–100, y1–100, x1 + 100, y1 + 100); //стирание уже нарисованного самолета x1 += 7; //сдвиг на несколько пикселей pDC->SelectObject(&BlackPen); airplane(pDC); Sleep(5); //миллисекундная задержка для наглядности движения } while (y1 > crect.Height() / 3) //взлет { pDC->SelectObject(&WhitePen); pDC->Rectangle(x1–100, y1–100, x1 + 100, y1 + 100); x1 += 5; y1 -= 5; pDC->SelectObject(&BlackPen); airplane(pDC); |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling