アノテーションの任意のツールバーのみ使用する方法、オブジェクト描画後に選択ポインタに変更しない方法はありますか?

文書番号 : 36910     文書種別 : 使用方法     登録日 : 2013/12/26     最終更新日 : 2014/11/21
文書を印刷する
対象製品
LEADTOOLS 17.5J Document Imaging
詳細
AnnAutomationManager.CurrentObjectIdChangedイベント内で、アノテーションオブジェクトを作成後、AnnAutomationManager.CurrentObjectIDプロパティを使用して現在選択しているアノテーションオブジェクトIDを変数に保存する方法があります。

以下のサンプルコードは、標準のアノテーションツールバーを非表示にし、長方形と選択ポインタのみを使用する方法です。
ここでは、ラジオボタンコントロールを2つ配置し、長方形と選択ポインタの切り替えを行うようにします。

サンプルコード(VB.NET)
' プログラムの最初にImportsを追加します。
Imports Leadtools.Annotations
Imports Leadtools.Codecs

Public Class Form1

    Private annAutomationManager As AnnAutomationManager
    Private currentTool As Integer
    Private annobjClicked As Boolean

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        ' RasterCodecsオブジェクトを初期化します。
        Dim codecs As RasterCodecs = New RasterCodecs

        ' メイン画像をビューアにロードします。
        RasterImageViewer1.Image = codecs.Load("image1.jpg")

        If (Not IsNothing(RasterImageViewer1.Image)) Then
            ' AutomationManagerを作成して設定します。
            annAutomationManager = New AnnAutomationManager

            ' デフォルト(すべて)の自動オブジェクトを作成します。
            annAutomationManager.CreateDefaultObjects()

            ' ツールバーを作成してフォームに追加します。
            annAutomationManager.CreateToolBar()
            Controls.Add(annAutomationManager.ToolBar)

            ' Automationを設定します(これにより、コンテナも作成されます)。
            Dim automation As AnnAutomation = New AnnAutomation(annAutomationManager, RasterImageViewer1)

            ' このAutomationをアクティブなAutomationに設定します。
            automation.Active = True
            
            ' 標準のツールバーを非表示にします。
            annAutomationManager.ToolBar.Visible = False
            
            ' イベントを追加します。
            AddHandler annAutomationManager.CurrentObjectIdChanged, AddressOf annAutomationManager_CurrentObjectIdChanged
        End If

    End Sub

    Private Sub annAutomationManager_CurrentObjectIdChanged(ByVal sender As Object, ByVal e As System.EventArgs)

        If annobjClicked = True Then
            currentTool = annAutomationManager.CurrentObjectId
            annobjClicked = False
        End If

    End Sub

    Private Sub RasterImageViewer1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles RasterImageViewer1.MouseMove

        If annAutomationManager.CurrentObjectId <> currentTool Then
            annAutomationManager.CurrentObjectId = currentTool
        End If

    End Sub

    Private Sub RasterImageViewer1_MouseDown(sender As Object, e As MouseEventArgs) Handles RasterImageViewer1.MouseDown

        If Not currentTool = 0 Then
            If annAutomationManager.CurrentObjectId <> currentTool Then
                annAutomationManager.CurrentObjectId = currentTool
            End If
        End If

    End Sub

    Private Sub RadioButton1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged

        If RadioButton1.Checked = True Then

            annobjClicked = True

            ' 選択ポインタ
            annAutomationManager.CurrentObjectId = annAutomationManager.SelectObjectId
        End If

    End Sub

    Private Sub RadioButton2_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged

        If RadioButton2.Checked = True Then

            annobjClicked = True

            ' 長方形
            annAutomationManager.CurrentObjectId = annAutomationManager.RectangleObjectId
        End If

    End Sub

End Class

サンプルコード(C#)
// プログラムの最初にusingを追加します。
using Leadtools.Annotations;
using Leadtools.Codecs;

・・・

    public partial class Form1 : Form
    {
        ・・・

        private AnnAutomationManager annAutomationManager;
        private int currentTool;
        private bool annobjClicked;

        private void Form1_Load(object sender, EventArgs e)
        {
            // RasterCodecsオブジェクトを初期化します。
            RasterCodecs codecs = new RasterCodecs();

            // メイン画像をビューアにロードします。
            rasterImageViewer1.Image = codecs.Load(@"image1.jpg");

            if (rasterImageViewer1.Image != null)
            {
                // AutomationManagerを作成して設定します。
                annAutomationManager = new AnnAutomationManager();

                // デフォルト(すべて)の自動オブジェクトを作成します。
                annAutomationManager.CreateDefaultObjects();

                // ツールバーを作成してフォームに追加します。
                annAutomationManager.CreateToolBar();
                Controls.Add(annAutomationManager.ToolBar);

                // Automationを設定します(これにより、コンテナも作成されます)。
                AnnAutomation automation = new AnnAutomation(annAutomationManager, rasterImageViewer1);

                // このAutomationをアクティブなAutomationに設定します。
                automation.Active = true;

                // 標準のツールバーを非表示にします。
                annAutomationManager.ToolBar.Visible = false;

                // イベントを追加します。
                annAutomationManager.CurrentObjectIdChanged += new EventHandler(annAutomationManager_CurrentObjectIdChanged);
            }
        }

        private void annAutomationManager_CurrentObjectIdChanged(object sender, EventArgs e)
        {
            if (annobjClicked == true)
            {
                currentTool = annAutomationManager.CurrentObjectId;
                annobjClicked = false;
            }
        }

        private void rasterImageViewer1_MouseMove(object sender, MouseEventArgs e)
        {
             if(annAutomationManager.CurrentObjectId != currentTool)
             {
                 annAutomationManager.CurrentObjectId = currentTool;
             }
        }

        private void rasterImageViewer1_MouseDown(object sender, MouseEventArgs e)
        {
            if (currentTool != 0)
            {
                if (annAutomationManager.CurrentObjectId != currentTool)
                {
                    annAutomationManager.CurrentObjectId = currentTool;
                }
            }
        }

        private void RadioButton1_CheckedChanged(object sender, EventArgs e)
        {
             if(RadioButton1.Checked == true)
             {
                 annobjClicked = true;

                 // 選択ポインタ
                 annAutomationManager.CurrentObjectId = Leadtools.Annotations.AnnAutomationManager.SelectObjectId;
             }
        }

        private void RadioButton2_CheckedChanged(object sender, EventArgs e)
        {
            if(RadioButton2.Checked == true)
            {
                annobjClicked = true;

                // 長方形
                annAutomationManager.CurrentObjectId =  Leadtools.Annotations.AnnAutomationManager.RectangleObjectId;
            }
        }
    }


関連情報
キーワード
アノテーション