在c#中以编程方式更改颜色Visio形状

时间:2017-06-20 11:43:03

标签: c# colors cell visio bpmn

我想按代码更改Visio中BPMN-Shape的颜色。到目前为止我所做的是改变" LineColor" Visio中ShapeSheet的单元格,包含以下代码段:

 _startShape.CellsU["LineColor"].FormulaForceU = "=RGB(255,0,0)";

然而,我自己绘制的形状并没有改变颜色。 ShapeSheet-Cell中的信息/值正在变化,但颜色仍然不可见。我读到了保护细胞的GUARD功能,但FormulaForceU应该忽略GUARD。

导入的形状正在按预期更改!只是自绘不会变为红色(RGB(255,0,0)。

我无法弄明白为什么!有谁经历过同样的经历?

提前致谢!

6 个答案:

答案 0 :(得分:2)

如果形状是一个组,那么您还需要更改子形状。

答案 1 :(得分:1)

选择任何形状,单击鼠标右键。查找下拉列表,如果取消组合选项未显示为灰色,则选中的形状为组

select any shape, click by right mouse button. Find **Group** drop-list, if there **Ungroup** option then selected shape is group

答案 2 :(得分:1)

您还可以通过绘图资源管理器窗口查看“形状解剖”,您可以在功能区开发人员标签上激活此窗口

Drawing explorer window

答案 3 :(得分:0)

尝试使用visio默认系统颜色常量 - vbRed或2 - VisDefaultColors Enumeration (Visio)

  

_startShape.CellsU [" LineColor"]。FormulaForceU = 2;

答案 4 :(得分:0)

我在俄罗斯stackoverflow帖子中找到了这个建议(使用CellsSRC语法) Change text color in Visio

  

Visio.Cell colorCell = shape.get_CellsSRC((简称)Visio.VisSectionIndices.visSectionCharacter,(简称)Visio.VisRowIndices.visRowCharacter,(简称)Visio.VisCellIndices.visCharacterColor);   colorCell.FormulaForceU =" RGB(0,255,255)&#34 ;;

答案 5 :(得分:0)

我有适合我的解决方案。我不认为这是最好的,因为正如Surrogate所指出的那样,您可以深入研究形状解剖并准确查看需要更改的内容。但是,如果没有这种迭代方法,我仍然无法弄清楚如何精确地获得需要改变的形状。这段代码正在改变形状的线条颜色而没有副作用。

public static void HighlightShape(Shape shape)
{
    if (shape == null) {
        return;
    }

    var processList = new Queue<Shape>();
    processList.Enqueue(shape);

    var allShapes = new List<Shape>();
    allShapes.Add(shape);

    while (processList.Count > 0) 
    {
        var s = processList.Dequeue();
        allShapes.Add(s);
        if (s.Shapes != null) {
            foreach (Shape subshape in s.Shapes) {
                processList.Enqueue(subshape);
            }
        }
    }

    foreach (Shape s in allShapes) 
    {
        s.CellsU["LineColor"].FormulaForceU = "THEMEGUARD(RGB(255,255,0))";
    }
}