IPB

Здравствуйте, гость ( Авторизация | Регистрация )


 
Reply to this topicStart new topicGo to the end of the page
> Программирование графики Windows в Visual C++
jura_k
сообщение 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 )
Подарок
Подарил(а): Айя-Софи
Подарок
Подарил(а): Айя-Софи
Подарок
Подарил(а): ShakuDancer




Go to the top of the pageGo to the end of the page
 
+Quote Post

Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 




> Статистика
Board Stats

Подарок форуму

10 евро

100 евро

10000 евро

1000000eur

  


Текстовая версия Сейчас: 27.04.2024 - 15:01