从图层中获取RGB-Color

本文关键字:RGB-Color 获取 图层 | 更新日期: 2023-09-27 18:05:26

我试着在一个visio文档中获得一个图层的当前颜色为RGB。我的问题是颜色,在公式中没有设置"RGB(1,2,3)"。有一些颜色设置,基于当前的方案。所以有颜色"255"(未选择图层颜色)或"19"(使用的颜色取决于活动方案,例如。深灰色)。

我需要一种方法将"19"转换为rgb方案,这取决于当前的方案和变体。

海科

从图层中获取RGB-Color

Visio有固定的前24种颜色。其他的都是RGB(R, G, B)式。固定色表可由Document.Colors得到。总而言之,您可以从以下内容开始:

using System.Drawing;
using System.Text.RegularExpressions;
using Visio = Microsoft.Office.Interop.Visio;
static Color GetLayerColor(Visio.Layer layer)
{
    var str = layer
        .CellsC[(short)Visio.VisCellIndices.visLayerColor]
        .ResultStrU[""];
    // case 1: fixed color
    int colorNum;
    if (int.TryParse(str, out colorNum))
    {
        var visioColor = layer.Document.Colors[colorNum];
        return Color.FromArgb(
            visioColor.Red, 
            visioColor.Green, 
            visioColor.Blue);
    }
    // case 2: RGB formula
    var m = Regex.Match(str, @"RGB'(('d+),'s*('d+),'s*('d+)')").Groups;
    return Color.FromArgb(
        int.Parse(m[1].Value), 
        int.Parse(m[2].Value), 
        int.Parse(m[3].Value)
        );
}