All Forums
 Категория Visio
 Форум Вопросы и ответы
 Отрисовка изображения на указанном контексте
Author Previous Topic Topic Next Topic  

Black_Serdzh

Russia
8 Posts

Posted - 12/10/2004 :  13:03:32
И ещё одна просьба.
Подскажите, пожалуйста, как сделать так, чтобы изображение страницы отрисовывалось на каком-либо контексте или в файл?
Я пробовал написать код, но отрисовать так и не получилось. :(
Знаю, что для захвата изображения страницы используется свойство Picture страницы.
О свойстве можно почитать здесь
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vissdk11/html/viproPicture.asp
А здесь
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/htm/ctin_p_482t.asp
можно почитать об интерфейсе IPicture, у которого есть метод Render, с помощью которого и осуществляется отрисовка изображения, полученного свойством Picture.
Вообще-то Picture возвращает тип stdole.IPictureDisp, но у объекта такого типа нет метода Render, поэтому я объявлял объект типа stdole.IPicture, а возвращаемый результат от свойства Picture приводил к типу IPicture. Вот такой каламбур. Может я и не правильно делал?
Я пытался изобразить, но отрисовка у меня так и не получилась, окошко было пустым. Кстати можно не только на каком-либо контексте отрисовывать, но и записывать в файл, что у меня тоже не получилось. Наверное, я делаю что-то не так.

Подскажите, плиизз, как же всё таки сделать так, чтобы всё заработало. Если можно, приведите работающий код, который можно протестить.

Большое спасибо!

Edited by - Black_Serdzh on 12/10/2004 13:11:15

Tumanov

Russia
1198 Posts

Posted - 12/10/2004 :  21:31:39
Вообще-то рисованием я не занимался, но сейчас попробовал вот это:

Макрос
Sub ttt()
UserForm1.Show 1
End Sub

Пустая формочка с одним обработчиком
Private Sub UserForm_Activate()
UserForm1.Picture = ActiveWindow.Selection(1).Picture
End Sub

Если теперь нарисовать что-нибудь на листе Visio, сгруппировать это, селектировать и выполнить макрос ttt, то на выскочившей формочке появится это изображение. Мне понравилось :)
Можно изображение отдельного шейпа перенести, тогда группировать не надо.
Вот только 2 момента где-то проскочили:
1. В Visio при этом поддерживается только формат emf.
2. Все это работает в "in-proc solutions", то есть во внешний exe не перенесешь. Хотя, я не пробовал, может уже что и изменилось...

Это Вам никак не поможет?
Go to Top of Page

Black_Serdzh

Russia
8 Posts

Posted - 12/15/2004 :  09:55:39
Ещё раз большущее спасибо за ваши ответы, за вашу помощь. Мы же делаем графический редактор на базе Visio и я реализую все функции в самом exe-шнике, так что буду пробовать. А в visio да, действительно всё клево получается. Вот ссылочка ну другой форум http://www.rsdn.ru/forum/?mid=936849 , где я задавал мой вопрос и получил ответ. Вообщем буду экспериментировать. Если у меня всё получится, то могу и код выложить, если хотите.
А ещё можно сделать вот так:
Private Sub UserForm_Activate()
    UserForm1.Picture = ActiveWindow.Document.Pages(1).Picture
End Sub

Edited by - Black_Serdzh on 12/15/2004 10:04:53
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)