Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2010, 14:35   #1
beda
Пользователь
 
Регистрация: 07.04.2010
Сообщений: 22
По умолчанию Работа с BuildFreeform

Есть код создаваемый кривую, все выводит как ожидается:
Код:
m_FreeFormFill = m_Document->Shapes->BuildFreeform(Office::MsoEditingType::msoEditingAuto, X, Y);
m_FreeFormFill->AddNodes(Office::MsoSegmentType::msoSegmentCurve,Office::MsoEditingType::msoEditingCorner, X1 ,Y1, X2,Y2,X3,Y3);
Сравнение фигуры созданной кодом выше и кривой созданной с помощью:
Код:
m_Document->Shapes->AddCurve(&pVariant);
полностью совпадают.
При усложнении фигуры (добавления линий например), часть фигуры "Curve" искажается, код:
Код:
m_FreeFormFill = m_Document->Shapes->BuildFreeform(Office::MsoEditingType::msoEditingAuto, X, Y);
m_FreeFormFill->AddNodes(Office::MsoSegmentType::msoSegmentLine,Office::MsoEditingType::msoEditingAuto, X1 ,Y1, 0,0,0,0);

m_FreeFormFill->AddNodes(Office::MsoSegmentType::msoSegmentCurve,Office::MsoEditingType::msoEditingCorner, X2 ,Y2, X3,Y3,X4,Y4);
Может кто нибудь сталкивался с такими особенностями? Как такое можно исправить? Какие из комбинаций MsoSegmentType и MsoEditingType могут быть совместимы, и к чему они приводят. У меня заработали только приведенные выше в коде комбинации. Заранее спасибо.
beda вне форума Ответить с цитированием
Старый 08.04.2010, 15:19   #2
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

У меня есть общее предложение:
динамически стройте ваш графический объект на VML как текстовый файл и затем включайте этот файл в документ с помощью InsertFile или поля INCLUDETEXT.
Aent вне форума Ответить с цитированием
Старый 08.04.2010, 17:08   #3
beda
Пользователь
 
Регистрация: 07.04.2010
Сообщений: 22
По умолчанию

Проблема с рисованием кривой решена.После добавления 'Curve' :
Код:
m_FreeFormFill->AddNodes(Office::MsoSegmentType::msoSegmentCurve,Office::MsoEditingType::msoEditingCorner, X1 ,Y1, X2,Y2,X3,Y3);
Нужно добавить конечную точку кривой еще раз с теми же MsoSegmentType и MsoEditingType.
Код:
m_FreeFormFill->AddNodes(Office::MsoSegmentType::msoSegmentCurve,Office::MsoEditingType::msoEditingCorner, X3 ,Y3, X3,Y3,X3,Y3);
Большое спасибо Aent. Помогла твоя первая подсказка добавить точку. Посмотрел VML, очень хорошая идея использовать его, замерное время вставки оказалось более чем приемлемо. К сожалению пока будет использоваться BuildFreeform, так как уже все готово, возможно в дальнейшем будем переходить на VML.
beda вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Баг Shapes->BuildFreeform beda Microsoft Office Word 4 07.04.2010 19:36
Задача. Работа с псевдослучайными последовательностями (ПСП). Работа с цветом. 0101 Помощь студентам 3 17.12.2009 23:57
Работа с webbrowser - Фреймы, работа с конкретным феймом в фрейме NewDelphi Фриланс 2 08.10.2009 11:00