我必须查看每个Visio的形状并确定它是否代表一个圆圈。
我找不到一个允许我知道形状,半径或任何与圆圈接触的元素的属性。
这是一个小代码:
for (var k = 1; k < shapesCount; k++)
{
var shape = Document.Pages[1].Shapes[k];
.......
if( 'element is a circle')
Console.WriteLine(shape.Name + " est un cercle");
}
对不起我的英语,我是法国学生。
谢谢,
答案 0 :(得分:0)
请参阅:
https://msdn.microsoft.com/EN-US/library/office/ff766806.aspx
和https://msdn.microsoft.com/en-us/library/cc160744.aspx
这两篇文章都没有任何形式的直接测试&#34;逻辑,我建议(有教养的猜测),这是因为在Visio中没有一个&#34;圈&#34;的概念。或者一个&#34;矩形&#34;。
Visio拥有这些&#34;模板&#34;允许你创建形状。
因此,圆形模板将是一个看起来像圆形的点的集合,并且当使用模板时,它会创建一个相同的新Shape
对象。
使用模板似乎被称为主形状,因此您可能会这样:
Visio.Document visioStencil = visioDocs.OpenEx("Basic Shapes.vss",
(short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDocked);
Visio.Master visioCircleMaster = visioStencil.Masters.get_ItemU(@"Circle");
// Shape code here
var shape = Document.Pages[1].Shapes[0];
var isCircle = shape.Master == visioCircleMaster;
我不确定这是否会起作用,即使它确实有效也只适用于使用该模板创建的形状。
如果您的问题更通用:
如何获取visio中形状的路径数据并启发式确定它是否代表圆圈?
然后,我担心我无法帮助你,可能根本不可能。