Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Линия - стрелка MFC 
:(
    Опции темы
zhenya1
Дата 24.9.2011, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.9.2010

Репутация: нет
Всего: нет



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

Код

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);
}};

PM MAIL   Вверх
Earnest
Дата 3.10.2011, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



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

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

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


--------------------
...
PM   Вверх
zhenya1
Дата 7.10.2011, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.9.2010

Репутация: нет
Всего: нет



Рисуются стрелки. Появилась новая проблема: при нажатии на  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());
}





Это сообщение отредактировал(а) zhenya1 - 7.10.2011, 19:03

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  1.png 7,97 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.