Mais

Componentes .NET que acionam ITools em ArcEngine / Objetos

Componentes .NET que acionam ITools em ArcEngine / Objetos


Estou construindo uma interface de mapa simples em um componente .net que preciso redistribuir.

Bem, meu pensamento inicial foi criar as ferramentas da mesma forma que estou acostumado a fazer no ArcMap, herdando BaseTool e, em seguida, definir a ferramenta MapControl.CurrentTool = em meus eventos de formulário onclick.

Qual é o melhor jeito de concluir isso? Este?

Além disso, como posso passar o gancho para essas ferramentas? Estou usando esta classe:

public class CommandPoolManager {public ICommandPool _CommandPool; public ICommandPoolEdit GetCommandPoolEdit {get {return (ICommandPoolEdit) _CommandPool; }} public ICommandPool GetCommandPool {get {return this._CommandPool; }} public CommandPoolManager (gancho do objeto) {this._CommandPool = new CommandPoolClass (); ICommandPoolEdit commandPoolEdit = (ICommandPoolEdit) this._CommandPool; commandPoolEdit.SetHook (gancho); } public void AddCommandToPool (comando ICommand) {ICommandPoolEdit commandPoolEdit = GetCommandPoolEdit; commandPoolEdit.AddCommand (command, null); commandPoolEdit.CallOnCreate (comando); } public void AddCommandToPool (comando ICommand, UID uid) {ICommandPoolEdit commandPoolEdit = GetCommandPoolEdit; commandPoolEdit.AddCommand (command, uid); commandPoolEdit.CallOnCreate (comando); }}

Essa seria a maneira correta de usar CommandPool? Estou sem opções para testar isso, pois é um componente a ser distribuído. A verdadeira questão é: estou no caminho certo?


Não tenho certeza sobre as coisas do CommandPool, mas há uma página sobre como trabalhar com ferramentas em seus aplicativos autônomos na documentação: Como criar um comando ou ferramenta para trabalhar com os controles


Você quer saber como replicar a funcionalidade da ferramenta existente com seu próprio botão?

// Cria a ferramenta ICommand _zoomInTool = new ControlsMapZoomInToolClass (); // vincule-o ao mapa _zoomInTool.OnCreate (axMapControl1.Object); // este bit vai em seu próprio manipulador de eventos de botão. axMapControl1.CurrentTool = (ITool) _zoomInTool;