Категории:

  • Программирование


  • Изобразительное искусство


  • Программирование встраиваемых систем


  • Компьютерная графика


  • WEB Разработка


  • Музыка


  • Инженерия


  • iVARIOUS


  • Mobil App


  • WinAPI. Фон для вывода Графиков функций.

    В предыдущей статье были добавлены кнопки на главное окно. В этой статье будет рассмотрен файл paintfone.h.
    Файл paintfone.h рисует псевдо окно на котором будут изображены графики функций. Белый фон представляет собой обычные линии заданой длинны выведены в цикле функцией paint_fon(), создавая обычный прямоугольник. meredian() рисует оси. тут есть важный момент, так как в нем не две прямые размещенные перпендикулярно, а четыре, которые лучами расходятся от центра в разные стороны. Сделано было для того чтоб легче перемещать график в разные стороны манипулируя всего лишь одной главной точкой. scale_div() рисует шкалу деления графика:

    #ifndef PAINTFONE_H_INCLUDED
    #define PAINTFONE_H_INCLUDED

    void paint_fon(HWND hwnd){

    HDC hDC = GetDC (hwnd);

    HPEN hPen = CreatePen (PS_SOLID, 5, RGB(255, 255, 255));
    SelectObject (hDC, hPen);

    for(int i=0; i<500; i++)
    {MoveToEx(hDC, 20, 20+i, NULL);
    LineTo(hDC, 560, 20+i);}


    DeleteObject (hPen);
    ReleaseDC (hwnd, hDC);}


    //.....................SCALE DIVISION...........................

    void scale_div(HWND hwnd, int x_center, int y_center, int zoom){

    HDC hDC = GetDC (hwnd);
    HRGN hrgn = CreateRectRgn(20,20,560,520);
    SelectClipRgn(hDC, hrgn);

    {
    for(int i=0; i<1000; i++)
    {MoveToEx(hDC, x_center+zoom+(i*zoom), y_center-3, NULL);
    LineTo(hDC, x_center+zoom+(i*zoom),y_center+3);}

    for(int i=0; i<1000; i++)
    {MoveToEx(hDC, x_center-(zoom+(i*zoom)), y_center-3, NULL);
    LineTo(hDC, x_center-(zoom+(i*zoom)),y_center+3);}}



    {
    for(int i=0; i<1000; i++)
    {MoveToEx(hDC, x_center-3, y_center-(zoom+(i*zoom)), NULL);
    LineTo(hDC, x_center+3,y_center-(zoom+(i*zoom)));}

    for(int i=0; i<1000; i++)
    {MoveToEx(hDC, x_center-3, y_center+(zoom+(i*zoom)), NULL);
    LineTo(hDC, x_center+3,y_center+(zoom+(i*zoom)));}

    }}
    //....................MEREDIAN..........................

    void meredian(HWND hwnd, int x_center, int y_center, int zoom){

    HDC hDC = GetDC (hwnd);


    HPEN hPen = CreatePen (PS_SOLID, 1, RGB(0, 0, 0));
    SelectObject (hDC, hPen);
    HRGN hrgn = CreateRectRgn(20,20,560,520);
    SelectClipRgn(hDC, hrgn);

    {MoveToEx(hDC, x_center, y_center, NULL);
    LineTo(hDC, x_center, 20);
    MoveToEx(hDC, x_center, y_center, NULL);
    LineTo(hDC, x_center, 520);}


    {

    MoveToEx(hDC, x_center, y_center, NULL);
    LineTo(hDC, 20, y_center);
    MoveToEx(hDC, x_center, y_center, NULL);
    LineTo(hDC, 560, y_center);}

    SelectObject(hDC, hPen);
    DeleteObject (hPen);
    ReleaseDC (hwnd, hDC);

    scale_div(hwnd,x_center,y_center,zoom);
    }

    void mousepaint(HWND hwnd, POINT point){
    HDC hdc = GetDC(hwnd);
    HPEN hPen = CreatePen (PS_SOLID, 10, RGB(0, 0, 0));
    SelectObject (hdc, hPen);

    MoveToEx(hdc, point.x, point.y, NULL);
    LineTo(hdc,point.x-5, point.y-5);
    DeleteObject (hPen);
    hPen = CreatePen (PS_SOLID, 10, RGB(255, 0, 0));
    SelectObject (hdc, hPen);
    MoveToEx(hdc, point.x, point.y, NULL);
    LineTo(hdc,point.x+5, point.y+5);

    //printf("%d",GetPixel(hdc,point.x+15,point.y));
    }


    #endif // PAINTFONE_H_INCLUDED


    Читайте больше в категории: Программирование

    2016-07-15 18:48:57



    Другие статьи:

    Maya. bend, sine, squash, twist, wave, flare.

    JavaScript. Создание простой Галереи изображений

    Некоторые особенности разработки. Заключение

    STM32. ADC (АЦП)

    Maya. Loft и Revolve

    Java. Конструкторы и ключевое слово this

    STM32. ADC (АЦП). Пример кода

    Физика цвета в живописи

    HTML. Создаем меню

    Maya. Материалы и Mental Ray