Программирование графики Windows в Visual C++ |
Здравствуйте, гость ( Авторизация | Регистрация )
Программирование графики Windows в Visual C++ |
13.01.2024 - 9:42
Сообщение
#1
|
|
Известный Текущее настроение: Вст. ник | Цитата Группа: Жители Сообщений: 835 Регистрация: 29.05.2013 Пользователь №: 68270 Из: Тольятти Награды: 4 Подарки: 19 Имя: jura_k Пол: М Репутация: 55 |
Свершилось! 20 лет я ждал этого момента. Теперь я умею рисовать в Windows.
Примеры использования графики показаны ниже. Код /* p160 Язык Visual C++ 6.0 Графика. Рисунки. */ int d = 0; // номер задачи void CP160View::OnDraw (CDC *pDC) { CP160Doc *pdoc = GetDocument (); ASSERT_VALID (pdoc); int a, b; if (d == 0) { // 160.56.1 pDC -> Rectangle (10, 10, 650, 490); pDC -> MoveTo (11, 11); pDC -> LineTo (649, 489); pDC -> MoveTo (649, 11); pDC -> LineTo (11, 489); pDC -> Rectangle (50, 50, 300, 300); for (a = 83; a > 0; a -= 5) pDC -> Ellipse (110 - a, 110 - a, 110 + a, 110 + a); } if (d == 1) { // 92.1.2 for (a = 0; a < 25; a++) for (b = 0; b < 25; b++) pDC -> SetPixel (5 * a + 30, 5 * b + 30, 0x1111); // 93.2.3 pDC -> Rectangle (100, 100, 300, 300); // голова pDC -> Ellipse (120, 140, 180, 200); pDC -> Ellipse (220, 140, 280, 200); pDC -> Ellipse (150, 170, 45, 135); // бровь pDC -> Ellipse (250, 170, 200, 135); pDC -> Ellipse (200, 250, 0, 360); pDC -> Rectangle (130, 280, 270, 290); pDC -> MoveTo (100, 300); // шея pDC -> LineTo (50, 350); pDC -> LineTo (350, 350); pDC -> LineTo (299, 299); // 98.5.4 for (a = 0; a < 9; a++) { pDC -> MoveTo (400 + a * 30, 30); pDC -> LineTo (400 + a * 30, 270); pDC -> MoveTo (400, 30 + a * 30); pDC -> LineTo (640, 30 + a * 30); } } } void CP160View::OnChar (UINT nChar, UINT nRepCnt, UINT nFlags) { d++; // переход к следующей задаче Invalidate (); CView::OnChar (nChar, nRepCnt, nFlags); } Код /* p31 Язык Visual C++ 6.0 Графики функций */ #include <math.h> int d = 0; // номер графика void CP31View::OnDraw (CDC *pDC) { CP31Doc *pdoc = GetDocument (); ASSERT_VALID (pdoc); int a, b, c, j; double g, h, i, m; if (d == 0) { // 31.2.1 pDC -> MoveTo (10, 360); pDC -> LineTo (1010, 360); pDC -> MoveTo (510, 10); pDC -> LineTo (510, 710); pDC -> MoveTo (510, 360); pDC -> LineTo (160, 10); pDC -> MoveTo (510, 360); pDC -> LineTo (560, 310); pDC -> LineTo (1010, 310); // 32.5.2 pDC -> MoveTo (510, 310); pDC -> LineTo (10, 310); pDC -> MoveTo (510, 310); pDC -> LineTo (560, 360); // 33.10.3 pDC -> MoveTo (560, 210); pDC -> LineTo (460, 10); pDC -> MoveTo (560, 210); pDC -> LineTo (710, 210); pDC -> LineTo (810, 10); } if (d == 1) { // 45.1.4 pDC -> MoveTo (10, 360); pDC -> LineTo (1010, 360); pDC -> MoveTo (510, 10); pDC -> LineTo (510, 710); for (a = 0; a < 1000; a++) { g = (a - 500) / 50.; h = fabs (2 * g + 1) - fabs (3 * g + 7); b = (int) (360 - h * 50); if (a == 0) {c = b; continue;} if (b >= 10 && b <= 710 && c >= 10 && c <= 710) { pDC -> MoveTo (a + 9, c); pDC -> LineTo (a + 10, b); } c = b; } // 47.3.5 pDC -> MoveTo (510, 310); pDC -> LineTo (1010, 310); pDC -> MoveTo (510, 410); pDC -> LineTo (10, 410); // 46.2.6 for (a = 0; a < 1000; a++) { g = (a - 500) / 50.; g += 1; j = 1; if (g < 0) {g = -g; j = -1;} // знак аргумента h = exp (1 / 3. * log (g)) * j; b = (int) (360 - h * 50); if (a == 0) {c = b; continue;} if (b >= 10 && b <= 710 && c >= 10 && c <= 710) { pDC -> MoveTo (a + 9, c); pDC -> LineTo (a + 10, b); } c = b; } } if (d == 2) { // 51.1.7 pDC -> MoveTo (10, 360); pDC -> LineTo (1010, 360); pDC -> MoveTo (510, 10); pDC -> LineTo (510, 710); pDC -> MoveTo (460, 260); pDC -> LineTo (335, 10); pDC -> MoveTo (460, 260); pDC -> LineTo (560, 260); pDC -> LineTo (685, 10); // 52.6.8 for (a = 0; a < 1000; a++) { g = (a - 500) / 50.; i = g; // член ряда m = g; // результат суммирования for (j = 2; j < 10; j += 2) { i *= -g * g / j / (j + 1); m += i; } h = m; // результат суммирования ряда разложения синуса b = (int) (360 - h * 50); if (a == 0) {c = b; continue;} if (b >= 10 && b <= 710 && c >= 10 && c <= 710) { pDC -> MoveTo (a + 9, c); pDC -> LineTo (a + 10, b); } c = b; } for (a = 0; a < 1000; a++) { g = (a - 500) / 50.; h = sin (g); b = (int) (360 - h * 50); if (a == 0) {c = b; continue;} if (b >= 10 && b <= 710 && c >= 10 && c <= 710) { pDC -> MoveTo (a + 9, c); pDC -> LineTo (a + 10, b); } c = b; } } } void CP31View::OnChar (UINT nChar, UINT nRepCnt, UINT nFlags) { d++; Invalidate (); CView::OnChar (nChar, nRepCnt, nFlags); } -------------------- Вот почему букеты из шаров придумали, а аниме-библиотеку – нет? Ведь то же самое (bunch – связка).
-------------------- Подарки: (Всего подарков: 19 ) |
|
|
|
|
|
Текстовая версия | Сейчас: 28.04.2024 - 11:17 |