LEADTOOLS ナレッジベース

[Document Imagingファミリー][ImageViewer] クリックした位置にアノテーションオブジェクトが存在するか判断するには?

AnnContainerクラスのHitTestPointメソッドを使用してアノテーションオブジェクトを取得して判断できます。

サンプルコード(VB.NET)

Dim ptdown As Point
Dim ptup As Point

Private Sub viewer_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)

    ptdown.X = e.X
    ptdown.Y = e.Y

End Sub

Private Sub viewer_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)

    ptup.X = e.X
    ptup.Y = e.Y

    If (ptdown.X = ptup.X And ptdown.Y = ptup.Y) Then

        ' アノテーションが存在する場合に処理します。
        If Not automation.Container.Children.Count = 0 Then

            ' HitTestPointメソッドを使用してアノテーションオブジェクトを取得して判断します。
            Dim pt As LeadPointD = New LeadPointD(e.X, e.Y)
            Dim annPt As LeadPointD = automation.Container.Mapper.PointToContainerCoordinates(pt)
            Dim obj() As AnnObject = automation.Container.HitTestPoint(annPt)

            If obj.Length = 0 Then
                MessageBox.Show("クリックした位置にアノテーションは存在しません。")
            Else
                MessageBox.Show(obj(0).FriendlyName)
            End If

        End If

    End If

End Sub

サンプルコード(C#)

Point ptdown;
Point ptup;

private void viewer_MouseDown(object sender, MouseEventArgs e)
{
    ptdown.X = e.X;
    ptdown.Y = e.Y;
}

private void viewer_MouseUp(object sender, MouseEventArgs e)
{
    ptup.X = e.X;
    ptup.Y = e.Y;

    if (ptdown.X == ptup.X & ptdown.Y == ptup.Y)
    {
        // アノテーションが存在する場合に処理します。
        if (automation.Container.Children.Count != 0)
        {
            // HitTestPointメソッドを使用してアノテーションオブジェクトを取得して判断します。
            LeadPointD pt = new LeadPointD(e.X, e.Y);
            LeadPointD annPt = automation.Container.Mapper.PointToContainerCoordinates(pt);
            AnnObject[] obj = automation.Container.HitTestPoint(annPt);

            if (obj.Length == 0)
            {
                MessageBox.Show("クリックした位置にアノテーションは存在しません。");
            }
            else
            {
                MessageBox.Show(obj[0].FriendlyName);
            }
        }
    }
}

 

実際の動作は.NETコントロール チュートリアルの「アノテーション New\AutomatedAnnotations」にMouseDown、MouseUpイベントを追加してお試しください。

0 コメント

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