Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Линия - стрелка MFC


Автор: zhenya1 24.9.2011, 18:46
Проблема: нужно рисовать линии-стрелки. Линии то рисуются, а вот срелка на конце - нет. Тут я попробыал по найденному алгоритму сделать, но не работаает:( Что же не так? И как вообще нужно это делать?

Код

void Draw (CDC *PDC){
double x3=2,y3=2,PI=180,LenNodVLine=2,AngNodVLine=2;
     double alpha=atan(double(m_Y2-m_Yl)/double(m_X2- m_Xl));

        if((m_X2-m_Xl)>=0) alpha+=PI;
         double x4=x3+LenNodVLine*cos(alpha-AngNodVLine);
        double x5=x3+LenNodVLine*cos(alpha+AngNodVLine);
        double y4=y3+LenNodVLine*sin(alpha-AngNodVLine);
        double y5=y3+LenNodVLine*sin(alpha+AngNodVLine);

        CPoint LINK[4];
        LINK[0].x=(long)x3;
        LINK[0].y=(long)y3;
        LINK[1].x=(long)x4;
        LINK[1].y=(long)y4;
        LINK[2].x=(long)x5;
        LINK[2].y=(long)y5;    
        
PDC->MoveTo(m_Xl, m_Yl);
PDC->LineTo(m_X2, m_Y2);
PDC->Polygon(LINK,3);
}};

Автор: Earnest 3.10.2011, 10:43
Надеюсь, еще не поздно...
Проверь отладчиком координаты стрелки (LINK), насколько они соответствуют ожидаемым.

Добавлено через 2 минуты и 22 секунды
Цитата(zhenya1 @  24.9.2011,  19:46 Найти цитируемый пост)
PI=180

Вообще-то углы в радианах мерять нужно... И что такое AngNodVLine=2?

Автор: zhenya1 7.10.2011, 18:38
Рисуются стрелки. Появилась новая проблема: при нажатии на  Undo в меню, удаляется последняя, но в месте с ней и удаляются наконечники всех остальных:(
Вроде все сделал: и добавил( см. ниже) и обработал:
Код

void CSharahovEADoc::OnEditUndo()
{
    // TODO: добавьте свой код обработчика команд
    
    int Index=m_LineArray.GetUpperBound();
if (Index>-1)
{
delete m_LineArray.GetAt(Index);
m_LineArray.RemoveAt(Index);
}
UpdateAllViews(0);
}

void CSharahovEADoc::OnUpdateEditUndo(CCmdUI *pCmdUI)
{
    pCmdUI->Enable(m_LineArray.GetSize());
}




Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)