Секторная Диаграмма

Тема в разделе "C/C++/C#", создана пользователем Rolana, 29 ноя 2013.

  1. Rolana

    Rolana New Member

    Регистрация:
    29 ноя 2013
    Сообщения:
    4
    Симпатии:
    0
    Очень нужна помощь
    Задание: нарисовать секторную диаграмму где значения x={11,12,23,40,50,60}

    Вот, то что я уже написала:
    Код (C++):
     int x=500, y=230, xp=500, yp=230;
    double d;
    ...

    case WM_PAINT:
    hdc = BeginPaint(hWnd, &ps);
    // TODO: добавьте любой код отрисовки...

    //Ellipse(hdc,50,10,500,450); //center (275;230)

    d=(11*2*3.14)/196;
    x=int(xp*cos(d)+yp*sin(d));
    y=int(-xp*sin(d)+yp*cos(d));
    Pie(hdc,50,10,500,450,xp,yp,x,y);
    xp=x; yp=y;

    d=(12*2*3.14)/196;
    x=int(xp*cos(d)+yp*sin(d));
    y=int(-xp*sin(d)+yp*cos(d));
    Pie(hdc,50,10,500,450,xp,yp,x,y);
    xp=x; yp=y;

    d=(23*2*3.14)/196;
    x=int(xp*cos(d)+yp*sin(d));
    y=int(-xp*sin(d)+yp*cos(d));
    Pie(hdc,50,10,500,450,xp,yp,x,y);
    xp=x; yp=y;

    d=(40*2*3.14)/196;
    x=int(xp*cos(d)+yp*sin(d));
    y=int(-xp*sin(d)+yp*cos(d));
    Pie(hdc,50,10,500,450,xp,yp,x,y);
    xp=x; yp=y;

    d=(50*2*3.14)/196;
    x=int(xp*cos(d)+yp*sin(d));
    y=int(-xp*sin(d)+yp*cos(d));
    Pie(hdc,50,10,500,450,xp,yp,x,y);
    xp=x; yp=y;

    d=(60*2*3.14)/196;
    x=int(xp*cos(d)+yp*sin(d));
    y=int(-xp*sin(d)+yp*cos(d));
    Pie(hdc,50,10,500,450,xp,yp,x,y);
    xp=x; yp=y;

    EndPaint(hWnd, &ps);
    break;
    Вот, то что мне показывает программа:
    [​IMG]

    Ну, никак не могу понять как сделать повороты секторов. Если убрать везде xp=x; yp=y;, то прога рисует правильных размеров секторы в одном месте. А если не убирать, то у секторов какие-то странные размеры.
     
Загрузка...

Поделиться этой страницей