アノテーションの任意のツールバーのみ使用する方法、オブジェクト描画後に選択ポインタに変更しない方法はありますか?
対象製品
LEADTOOLS 17.5J Document Imaging
詳細
AnnAutomationManager.CurrentObjectIdChangedイベント内で、アノテーションオブジェクトを作成後、AnnAutomationManager.CurrentObjectIDプロパティを使用して現在選択しているアノテーションオブジェクトIDを変数に保存する方法があります。
以下のサンプルコードは、標準のアノテーションツールバーを非表示にし、長方形と選択ポインタのみを使用する方法です。
ここでは、ラジオボタンコントロールを2つ配置し、長方形と選択ポインタの切り替えを行うようにします。
サンプルコード(VB.NET)
サンプルコード(C#)
以下のサンプルコードは、標準のアノテーションツールバーを非表示にし、長方形と選択ポインタのみを使用する方法です。
ここでは、ラジオボタンコントロールを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; } } }
関連情報
キーワード
アノテーション