LEADTOOLS Support
Document
Document SDK Questions
Re: Show Item On Top of Selected Annotation Object
This topic and its replies were posted before the current version of LEADTOOLS was released and may no longer be applicable.
#1
Posted
:
Tuesday, May 1, 2012 9:54:06 PM(UTC)
Groups: Registered
Posts: 11
Hello,
I am working on an application were one of the requirements is to show a floating dialog bar above the selected annotation object, i am using The Bounding Rectangle (X & Y) properties to consider them as a starting point but none of them worked correctly as the returned point is far from the top, i used the following code:
Private Sub SetAnnotaionBarStylePosition(ByVal obj As AnnObject)
If obj IsNot Nothing Then
'Dim ScreenAnnPoint As AnnPoint = GetScreenCoordinates(obj)
Dim rec As AnnRectangle = GetObjectRealBoundingRectangle(obj)
Dim ScreenAnnPoint As AnnPoint = GetObjectRealPoints(obj, rec.Location)
Dim boundRectangle As AnnRectangle = obj.BoundingRectangle
barAnnotationStyle.FloatLocation = New Point(boundRectangle.X, boundRectangle.Y)
End If
End Sub
"barAnnotationStyle is a third library control that allows a bar to be floated"
So my question :What is the correct way to get the position of the top left part of an AnnObject?
#2
Posted
:
Wednesday, May 2, 2012 5:37:30 AM(UTC)
Groups: Registered, Tech Support
Posts: 1,326
Was thanked: 1 time(s) in 1 post(s)
If you are getting incorrect values when using the obj.BoundingRectangle, you need to use the AnnTransformer class to convert the object's BoundingRectangle to the correct coordinates. Please check the following code:
+-------------------+
Private Function GetObjectRealBoundingRectangle(ByVal obj As AnnObject) As AnnRectangle
' get the un-transformed bounding rectangle
Dim rc As AnnRectangle = obj.BoundingRectangle
'apply the object transformation to this rectangle
Dim t As AnnTransformer = New AnnTransformer(obj.Container.UnitConverter, obj.Transform)
rc = t.RectangleToPhysical(rc)
Return rc
End Function
+-------------------+
If you mean something else, please provide me with more details about the problem.
Thanks,
Maen Badwan
LEADTOOLS Technical Support
#3
Posted
:
Wednesday, May 2, 2012 7:51:57 AM(UTC)
Groups: Registered
Posts: 11
Hi,
Thanks for your reply.
I tried using that code before and still am not getting the result that i want.
I know it by comparing the x and y of the MouseEventArgs with the X and Y of the bounding rectangle
for example when i click on the top left part of the annotation (i.e the gripping part to re size it) i capture both the x and y in MouseClick of RasterImageViewer, let's say in my case it's
X=85, Y=137
when i check the x and y of The AnnRectangle returned by GetObjectRealBoundingRectangle
it will be something like
X=243, Y=391 which is way far than the mouse x and y,
i will rephrase my question to how can i convert the rectangle positions to be in relative to the RasterImageViewer
#4
Posted
:
Wednesday, May 2, 2012 7:57:42 AM(UTC)
Groups: Registered
Posts: 11
by rectangle positions i meant the top left part of an Annotation Object or it's bounding rectangle.
#5
Posted
:
Wednesday, May 2, 2012 9:26:55 AM(UTC)
Groups: Registered
Posts: 11
please, ignore my last question.
When i use the GetObjectRealBounds to get a rectangle, The X and Y point of the location property, do they represent the exact X and Y points as screen coordinates regardless of the RasterImageViewer?
if no then how do i get the exact (top, left) coordinates in screen for an annotation object, regardless of the RasterImageViewer?
#6
Posted
:
Wednesday, May 2, 2012 11:04:48 PM(UTC)
Groups: Registered, Tech Support
Posts: 1,326
Was thanked: 1 time(s) in 1 post(s)
The values after the transformation I gave you are for the annotation location in bitmap coordinates.
However, the mouse events give you location values in client coordinates.
If the image is neither scrolled nor zoomed (100% zoom factor), the 2 values should be identical. However, if there's any zooming or scrolling, you can convert between the 2 coordinate systems using Leadtools.Drawing.Transformer class and RasterImageViewer1.Transform as follows:
+--------------------+
' get the un-transformed bounding rectangle
Dim rc As AnnRectangle = automation.CurrentEditObject.BoundingRectangle
'apply the object transformation to this rectangle
Dim t As AnnTransformer = New AnnTransformer(automation.CurrentEditObject.Container.UnitConverter, automation.CurrentEditObject.Transform)
rc = t.RectangleToPhysical(rc)
Dim Trans As Leadtools.Drawing.Transformer = New Leadtools.Drawing.Transformer(RasterImageViewer1.Transform)
'use the following Point
Dim p As PointF = Trans.PointToPhysical(New PointF(rc.X, rc.Y))
+--------------------+
Thanks,
Maen Badwan
LEADTOOLS Technical Support
#7
Posted
:
Wednesday, May 2, 2012 11:30:54 PM(UTC)
Groups: Registered
Posts: 11
So if i use this method it will give me the top-left point of the bounding rectangle position relative to The Viewer?
#8
Posted
:
Wednesday, May 2, 2012 11:41:50 PM(UTC)
Groups: Registered
Posts: 11
thank you very much, after i got the point and used pointToScreen Method on The Viewer i got the right coordinates
LEADTOOLS Support
Document
Document SDK Questions
Re: Show Item On Top of Selected Annotation Object
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.