All Forums
 Категория Visio
 Форум Вопросы и ответы
 Нарисовать невидимый прямоугольник
Author Previous Topic Topic Next Topic  

mers

Russia
159 Posts

Posted - 09/14/2005 :  16:35:45
Здравствуйте.
Подскажите пожалуйста. Могу ли я с помощью RectangleTool нарисовать невидимы прямоугольник. Т.е не сделать его нивидимым уже после того как он уже нарисован, а именно сразу нарисовать нивидимым с помощью этого инструмента.

С уважением, Владимир.

Digitall

Russia
389 Posts

Posted - 09/14/2005 :  16:42:56  Visit Digitall's Homepage
quote:
Originally posted by mers

Здравствуйте.
Подскажите пожалуйста. Могу ли я с помощью RectangleTool нарисовать невидимы прямоугольник. Т.е не сделать его нивидимым уже после того как он уже нарисован, а именно сразу нарисовать нивидимым с помощью этого инструмента.

С уважением, Владимир.


Да. Причем совершенно просто. Выбираете этот инструмент, ставите линии на None, заливку на None тоже и рисуете себе на здоровье.

Т.е. берете невидимые линии с невидимой заливкой и получаете невидимый прямоугольник.
Go to Top of Page

mers

Russia
159 Posts

Posted - 09/14/2005 :  17:17:35
может дурацкий вопрос, но как сделать линии и заливку none программно? в шейп шите page такого нет, сам прямоугольник еще не нарисован...
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 09/14/2005 :  19:58:10
Вообще-то, по умолчанию должен использоваться стиль normal. Если его переопределить, то будет рисоваться невидимым.
Можно не переопределять Normal, а выбрать какой-нибудь другой стиль, например Text Only.
Но я не понимаю, как Вы собираетесь программно рисовать с помощью RectangleTool.
Go to Top of Page

mers

Russia
159 Posts

Posted - 09/15/2005 :  14:26:51
задача на самом деле более общая..

Нужно сделать элемент управления - изменение масштаба.
Стандартный Pan&Zoom не подходит.
Поэтому есть идея создать инструмент увеличения, который работает следующим образом (по крайней мере так хотелось бы): Переходим в режим рисования прямоугольников. Делее Рисуется нивидимый прямоугольник - область которую нужно увеличить. Получаем координаты точек в его углах. Прямоугольник удаляется. Функцией SetViewRect устанавливаем видимую область схемы равную этому прямоугольнику.

так вот.. собственно что не получается.. сделать так что бы сразу рисовался невидимый прямоугольник... т.е есть небольшой промежуток времени когда созданный прямоугольник видим.. мелочь, а неприятно.
quote:
Вообще-то, по умолчанию должен использоваться стиль normal. Если его переопределить, то будет рисоваться невидимым.

Так вот собственно вопрос в том, как программно переопределить стиль несозданного шейпа?.. в визио это делается через Format -> LineStyle; Format -> FillStyle; после этого любой шейп нарисованный с помощью инструменов панели Drawing рисуется нивидимым...

Если можно кусок кода на чем угодно..

С уважением, Владимир.

Go to Top of Page

immortal

Russia
391 Posts

Posted - 09/15/2005 :  14:48:41  Visit immortal's Homepage
а может копать в другом направлении? сделать обработчик нажатия мыши, при моузедовн вычислять первую координату, по моузеап вторую, и никаких прямоугольников не надо, ... хм. к чему всё это...
не совсем понятна задача, необходимо менять масштаб страницы (листа) или размеры отдельных элементов чертежа? насколько мне известно нельзя использовать несколько массштабов на одном листе стандартными средствами (например как в компасе), была идея это реализовать, но необходимости большой нет.

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page

mers

Russia
159 Posts

Posted - 09/15/2005 :  14:49:44
Вот мой кусок кода..

Это обработка события нажатия на клавишу "Войти в режим увеличения масштаба"

// Включаем режим рисования примоугольников.
...
...
...

// Собственно это и есть те строки которые вызывают вопросы...
Visio.Shape zoomRectangle = null;

zoomRectangle.LineStyle = "None";
zoomRectangle.FillStyle = "None";


это обработка события - добавление шейпа на drawingControl
естественно есть некоторые проверки чтобы убедиться что это именно режим изменения масштаба.
Visio.Shape zoomRectangle = null;

zoomRectangle = axDrawingControl.Window.Selection[1];

// Получение информации о размерах и положнении прямоугольника
double left,right,top,bottom;
zoomRectangle.BoundingBox((short)Visio.VisBoundingBoxArgs.visBBoxUprightWH, out left, out bottom, out right, out top);

// Удаляем прямоугольник
zoomRectangle.Delete();

// Устанавливаем новые границы экрана
axDrawingControl.Window.SetViewRect(left, top, right-left,top-bottom);
Go to Top of Page

mers

Russia
159 Posts

Posted - 09/15/2005 :  14:55:51
quote:
а может копать в другом направлении? сделать обработчик нажатия мыши, при моузедовн вычислять первую координату, по моузеап вторую, и никаких прямоугольников не надо, ... хм. к чему всё это...
не совсем понятна задача, необходимо менять масштаб страницы (листа) или размеры отдельных элементов чертежа? насколько мне известно нельзя использовать несколько массштабов на одном листе стандартными средствами (например как в компасе), была идея это реализовать, но необходимости большой нет.

1. необходимо менять масштаб части чертежа. т.е захотели увеличить изображение в какой то части чертежа... взяли выделили ее в прямоугольник - увеличили. теперь это часть во весь экран.
2. можно конечно и так.. только тогда встает вопрос в каком режиме у нас находиться курсор. PointerTool,ConnectorTool,TextTool или в режимах с панели Drawing. Представте что например по нажатию кнопки "Войти в режим увеличения масштаба" включается стандартный PointerTool и я делаю захват мыши... а что если пользователь просто захочет перетащить какой либо объект схемы на другое место?... он будет двигать объект, я осуществляю захват... и что получиться? он хотел только передвинуть, а получилось что еще и увеличил... при моем способе такой момент учтен.

Edited by - mers on 09/15/2005 15:47:29
Go to Top of Page

mers

Russia
159 Posts

Posted - 09/15/2005 :  15:43:02
нашел как это сделать...
Visio.Document currentDocument = axDrawingControl.Document;
currentDocument.DefaultFillStyle = "None";
CurrentDocument.DefaultLinestyle = "None";
после этого любая нарисованная фигура будет прозрачной...

собственно, что я хотел узнать, то я узнал...

но дискуссию по поводу того как лучше и грамотнее сделать поставленную задачу можно продолжить. С удовольствием выслушаю ваши мысли по этому поводу.

Edited by - mers on 09/15/2005 15:46:06
Go to Top of Page

immortal

Russia
391 Posts

Posted - 09/15/2005 :  15:54:24  Visit immortal's Homepage
понял, как в автокаде увеличение по выделенному.
делаем кнопочку и по нажатию на эту кнопочку включаем режим увеличениям вне зависимости от режима курсора, жмакаем ещё раз выходим из этого режима, вобще идея интересная, надо будет сделать её

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)