从图层中获取RGB-Color
本文关键字:RGB-Color 获取 图层 | 更新日期: 2023-09-27 18:05:26
我试着在一个visio文档中获得一个图层的当前颜色为RGB。我的问题是颜色,在公式中没有设置"RGB(1,2,3)"。有一些颜色设置,基于当前的方案。所以有颜色"255"(未选择图层颜色)或"19"(使用的颜色取决于活动方案,例如。深灰色)。
我需要一种方法将"19"转换为rgb方案,这取决于当前的方案和变体。
海科
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)
);
}