All Forums
 Категория Visio
 Форум Вопросы и ответы
 Изменение цвета шейпа
Author Previous Topic Topic Next Topic  

Svistunov

3 Posts

Posted - 03/04/2003 :  19:51:54
Подскажите, как программно изменить цвет линий и цвет заполнения шейпа?

Tumanov

Russia
1198 Posts

Posted - 03/05/2003 :  11:18:37
На сайте есть такой раздел - FAQ. Там много полезных вопросов и ответов. Этот тоже обсуждался. Цитирую:

Как VB закрасить прямоугольник? Подскажите, как VB нарисовать прямоугольник и закрасить его, допустим, красным цветом.
MyObj = ActivePage.DrawRectangle(5, 5, 6, 6) а дальше?
------------------------------
Нажимаете Format/Fill/Color. Видите, слева красного цвета стоит цифра 2. Это номер цвета в палитре Visio. Красить шейпы можно цветами из палитры от 0 до 23 (туда можно включать и свои цвета).
Делается это так:
Рисуем шейп прямоугольник
Set MyObj = ActivePage.DrawRectangle(5, 5, 6, 6)
Определяем ячейку, отвечающую за цвет
Set cellObj = MyObj.Cells("FillForegnd")
Говорим, что шейп должен быть красным
cellObj.Formula = 2
Вместо прямого указания индекса палитры можно использовать функцию rgb(), например rgb(255, 0, 0) возвратит индекс красного цвета.
cellObj.Formula = "RGB(255; 0; 127)"
Путем определения в документе пользовательских цветов можно нарастить палитру еще на 232 цвета, но при этом нужно быть осторожным при переносе шейпов из одного документа в другой (при некорректной работе могут перекраситься).
Go to Top of Page

Svistunov

3 Posts

Posted - 03/05/2003 :  18:53:18
Такой способ работает в том случае, если шейп простой. Но если шейп представляет собой сгруппированные прямоугольник и линию, то так не получается.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 03/06/2003 :  10:57:13
Естественно.
А Вы включите Drawing Explorer и присмотритесь к этой группе, сразу станет понятно - почему.
Когда прямоугольник и линия сгруппированы, то получается уже три шейпа: группа, прямоугольник и линия. Причем два последних входят в отдельную коллекцию Shapes, которая принадлежит шейпу-группе.
Короче нужно влезать в группу и уже в ней перебирать и перекрашивать входящие шейпы. Типа ActivePage.Shapes(1).Shapes(1).Cells("FillForegnd").Formula = 3
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)