LEADTOOLS ナレッジベース

[Document Imagingファミリー][RasterImageViewer] アノテーションツールバーの任意のオブジェクトのみ使用、オブジェクト描画後に選択ポインタに変更しない方法は?

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;
            }
        }
    }

 

関連情報

0 コメント

記事コメントは受け付けていません。