Gets a value indicating whether this AnnAutomation is in a state where objects can be grouped together.
public virtual bool CanGroup { get; } Public Overridable ReadOnly Property CanGroup As Boolean
public:virtual property bool CanGroup {bool get();}
true if this AnnAutomation is in a state where objects can be grouped together; false otherwise.
The AnnAutomation is in a state where objects can be grouped together when 2 or more objects are in an edit state.
Call the Group method to group the objects currently being edited together.
Note, when you select one or more objects in this AnnAutomation through the user interface, an AnnGroupObject will be created and the selected objects are moved from the Container to this AnnGroupObject. This AnnGroupObject is a temporary group and will be ungrouped (by calling AnnGroupObject.Ungroup) and added back to the Container when the objects are not selected anymore (for example, by clicking somewhere in the container outside the group or by calling the user interface or by calling SelectNone). To check if the current editing object is the temporary group, first check if the CurrentEditObject is an AnnGroupObject, then check if the IsTemporary value is set to true.
For more information about grouping and ungrouping, refer to Grouping and Ungrouping WPF Annotation Objects.
This example will add two objects into the automation and then group them together.
using Leadtools.Windows.Controls;using Leadtools.Windows.Annotations;using Leadtools.Demos;using Leadtools.Help;private void AnnAutomation_CanGroup(AnnAutomation automation){ShowStatus(automation);// first, add two objects to the automationAnnRectangleObject rectObj = new AnnRectangleObject();rectObj.Rect = new Rect(100, 100, 200, 200);rectObj.Stroke = Colors.Blue;rectObj.Fill = Colors.Transparent;rectObj.StrokeThickness = 1.0;automation.Container.Children.Add(rectObj);ShowStatus(automation);AnnLineObject lineObj = new AnnLineObject();lineObj.Start = new Point(100, 100);lineObj.End = new Point(200, 200);lineObj.Stroke = Colors.Red;lineObj.StrokeThickness = 1.0;automation.Container.Children.Add(lineObj);ShowStatus(automation);// "select" both objectsautomation.StartEditing(rectObj, false);ShowStatus(automation);automation.StartEditing(lineObj, true);ShowStatus(automation);// make this group object a true groupif (automation.CanGroup){automation.Group();ShowStatus(automation);}// ungroup to again to the origina 2 objectsif (automation.CanUngroup){automation.Ungroup();ShowStatus(automation);}}private void ShowStatus(AnnAutomation automation){System.Text.StringBuilder sb = new System.Text.StringBuilder();sb.Append("Number of objects: ");sb.Append(automation.Container.Children.Count);sb.Append(Environment.NewLine);sb.Append("Object currently being edited: ");if (automation.CurrentEditObject != null){sb.Append(automation.CurrentEditObject.GetType().Name);if (automation.CurrentEditObject is AnnGroupObject){sb.Append(", Temporary: ");AnnGroupObject group = automation.CurrentEditObject as AnnGroupObject;sb.Append(group.IsTemporary);}}elsesb.Append("None");sb.Append(Environment.NewLine);sb.Append("CanGroup: ");sb.Append(automation.CanGroup);sb.Append(", CanUngroup: ");sb.Append(automation.CanUngroup);MessageBox.Show(sb.ToString());}
Imports Leadtools.Windows.ControlsImports Leadtools.Windows.AnnotationsPrivate Sub AnnAutomation_CanGroup(ByVal automation As AnnAutomation)ShowStatus(automation)' first, add two objects to the automationDim rectObj As AnnRectangleObject = New AnnRectangleObject()rectObj.Rect = New Rect(100, 100, 200, 200)rectObj.Stroke = Colors.BluerectObj.StrokeThickness = 1.0rectObj.Fill = Nothingautomation.Container.Children.Add(rectObj)ShowStatus(automation)Dim lineObj As AnnLineObject = New AnnLineObject()lineObj.Start = New Point(100, 100)lineObj.End = New Point(200, 200)lineObj.Stroke = Colors.RedlineObj.StrokeThickness = 1.0automation.Container.Children.Add(lineObj)ShowStatus(automation)' "select" both objectsautomation.StartEditing(rectObj, False)ShowStatus(automation)automation.StartEditing(lineObj, True)ShowStatus(automation)' make this group object a true groupIf automation.CanGroup Thenautomation.Group()ShowStatus(automation)End If' ungroup to again to the origina 2 objectsIf automation.CanUngroup Thenautomation.Ungroup()ShowStatus(automation)End IfEnd SubPrivate Sub ShowStatus(ByVal automation As AnnAutomation)Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder()sb.Append("Number of objects: ")sb.Append(automation.Container.Children.Count)sb.Append(Environment.NewLine)sb.Append("Object currently being edited: ")If Not automation.CurrentEditObject Is Nothing Thensb.Append(automation.CurrentEditObject.GetType().Name)If TypeOf automation.CurrentEditObject Is AnnGroupObject Thensb.Append(", Temporary: ")Dim group As AnnGroupObject = DirectCast(automation.CurrentEditObject, AnnGroupObject)sb.Append(group.IsTemporary)End IfElsesb.Append("None")End Ifsb.Append(Environment.NewLine)sb.Append("CanGroup: ")sb.Append(automation.CanGroup)sb.Append(", CanUngroup: ")sb.Append(automation.CanUngroup)MessageBox.Show(sb.ToString())End Sub
using Leadtools.Windows.Controls;using Leadtools.Windows.Annotations;using Leadtools.Examples;using Leadtools.Silverlight.Demos;//using Leadtools.Help;private void AnnAutomation_CanGroup(AnnAutomation automation){ShowStatus(automation);// first, add two objects to the automationAnnRectangleObject rectObj = new AnnRectangleObject();rectObj.Rect = new Rect(100, 100, 200, 200);rectObj.Stroke = Colors.Blue;rectObj.Fill = Colors.Transparent;rectObj.StrokeThickness = 1.0;automation.Container.Children.Add(rectObj);ShowStatus(automation);AnnLineObject lineObj = new AnnLineObject();lineObj.Start = new Point(100, 100);lineObj.End = new Point(200, 200);lineObj.Stroke = Colors.Red;lineObj.StrokeThickness = 1.0;automation.Container.Children.Add(lineObj);ShowStatus(automation);// "select" both objectsautomation.StartEditing(rectObj, false);ShowStatus(automation);automation.StartEditing(lineObj, true);ShowStatus(automation);// make this group object a true groupif (automation.CanGroup){automation.Group();ShowStatus(automation);}// ungroup to again to the origina 2 objectsif (automation.CanUngroup){automation.Ungroup();ShowStatus(automation);}}private void ShowStatus(AnnAutomation automation){System.Text.StringBuilder sb = new System.Text.StringBuilder();sb.Append("Number of objects: ");sb.Append(automation.Container.Children.Count);sb.Append(Environment.NewLine);sb.Append("Object currently being edited: ");if (automation.CurrentEditObject != null){sb.Append(automation.CurrentEditObject.GetType().Name);if (automation.CurrentEditObject is AnnGroupObject){sb.Append(", Temporary: ");AnnGroupObject group = automation.CurrentEditObject as AnnGroupObject;sb.Append(group.IsTemporary);}}elsesb.Append("None");sb.Append(Environment.NewLine);sb.Append("CanGroup: ");sb.Append(automation.CanGroup);sb.Append(", CanUngroup: ");sb.Append(automation.CanUngroup);MessageBox.Show(sb.ToString());}
Imports Leadtools.Windows.ControlsImports Leadtools.Windows.AnnotationsImports Leadtools.Silverlight.Demos'using Leadtools.Help;Private Sub AnnAutomation_CanGroup(ByVal automation As AnnAutomation)ShowStatus(automation)' first, add two objects to the automationDim rectObj As AnnRectangleObject = New AnnRectangleObject()rectObj.Rect = New Rect(100, 100, 200, 200)rectObj.Stroke = Colors.BluerectObj.Fill = Colors.TransparentrectObj.StrokeThickness = 1.0automation.Container.Children.Add(rectObj)ShowStatus(automation)Dim lineObj As AnnLineObject = New AnnLineObject()lineObj.Start = New Point(100, 100)lineObj.End = New Point(200, 200)lineObj.Stroke = Colors.RedlineObj.StrokeThickness = 1.0automation.Container.Children.Add(lineObj)ShowStatus(automation)' "select" both objectsautomation.StartEditing(rectObj, False)ShowStatus(automation)automation.StartEditing(lineObj, True)ShowStatus(automation)' make this group object a true groupIf automation.CanGroup Thenautomation.Group()ShowStatus(automation)End If' ungroup to again to the origina 2 objectsIf automation.CanUngroup Thenautomation.Ungroup()ShowStatus(automation)End IfEnd SubPrivate Sub ShowStatus(ByVal automation As AnnAutomation)Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder()sb.Append("Number of objects: ")sb.Append(automation.Container.Children.Count)sb.Append(Environment.NewLine)sb.Append("Object currently being edited: ")If Not automation.CurrentEditObject Is Nothing Thensb.Append(automation.CurrentEditObject.GetType().Name)If TypeOf automation.CurrentEditObject Is AnnGroupObject Thensb.Append(", Temporary: ")Dim group As AnnGroupObject = TryCast(automation.CurrentEditObject, AnnGroupObject)sb.Append(group.IsTemporary)End IfElsesb.Append("None")End Ifsb.Append(Environment.NewLine)sb.Append("CanGroup: ")sb.Append(automation.CanGroup)sb.Append(", CanUngroup: ")sb.Append(automation.CanUngroup)MessageBox.Show(sb.ToString())End Sub
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET
