1

図形に描画する簡単なコードがあります。

Visio.Shape dropShape = ActivePage.Drop(GetMaster(@"Circle"), x, y);
Visio.Shape dropShape2 = ActivePage.Drop(GetMaster(@"Circle"), x + 3, y);

そして、この形状のコンテナを追加したい

VisApp.ActiveWindow.Select(dropShape, (short)Visio.VisSelectArgs.visSelect);
VisApp.ActiveWindow.Select(dropShape2, (short)Visio.VisSelectArgs.visSelect);

object vsoSelection = VisApp.ActiveWindow.Selection;
Visio.Shape containerMaster = ActivePage.Drop(GetMaster(@"Square"), x -3, y-3);
Visio.Shape container = ActivePage.DropContainer(containerMaster, vsoSelection);

インターネットでこのサンプルを見つけましたが、動作しませんでした。アイデアはありますか?

4

1 に答える 1

0

コードの問題は、DropContainer() 呼び出しで任意のマスターをコンテナーとして使用できないことです。

代わりに、コンテナーを含むステンシルを読み込み、そのステンシル内のコンテナー マスターの 1 つを選択する必要があります。

このための完全なコードは次のとおりです。

var app = new IVisio.ApplicationClass();

var docs = app.Documents;
var doc = docs.Add("");
var page = app.ActivePage;
short flags = (short)
    ( IVisio.VisOpenSaveArgs.visOpenDocked | 
    IVisio.VisOpenSaveArgs.visOpenRO);

var basic_stencil = docs.OpenEx("basic_u.vss", flags);
var basic_masters = basic_stencil.Masters;
var rounded_rect_master = basic_masters["Rounded Rectangle"];

double x = 2.0;
double y = 3.0;

var shape1 = page.Drop(rounded_rect_master, x, y);
var shape2 = page.Drop(rounded_rect_master, x + 3.0, y+1.0);

var stenciltype = IVisio.VisBuiltInStencilTypes.visBuiltInStencilContainers;

var measurementsys = IVisio.VisMeasurementSystem.visMSDefault;
short containeropenflags = (short) IVisio.VisOpenSaveArgs.visOpenHidden;
string containerstencil_filename = app.GetBuiltInStencilFile(stenciltype, measurementsys);
var container_stencil = docs.OpenEx(containerstencil_filename, containeropenflags);
var containermasters = container_stencil.Masters;
var container = containermasters["Container 1"];

var activewindow = app.ActiveWindow;
short selectargs = (short)IVisio.VisSelectArgs.visSelect;
activewindow.Select(shape1, selectargs);
activewindow.Select(shape2, selectargs);

page.DropContainer(container, activewindow.Selection);
于 2013-04-20T06:02:45.687 に答える