Transform Shape Bounds to screen bounds


https://www.nevron.com/Forum/Topic9609.aspx
Print Topic | Close Window

By Kevin Harrison - 8 Years Ago
Hi
We want to simulate clicking on a shape in a diagram for testing purposes.
How do I transform the shape bounds within the view to screen coordinates?
Thanks
Kevin
By Kevin Harrison - 8 Years Ago
We've tried using shape.WorldTransform.TransformBounds(shape.Bounds).
The relative positions of the shapes are correct, but they are not the coordinates of the pixels on the screen. What offset do we need to apply?
Thanks
Kevin
By Nevron Support - 8 Years Ago
Hi,

The bounds of a shape are in scene coordinates, so in order to get its bounds in screen coordinates you should first convert the scene coordinates to device coordinates using the drawing view's SceneToDevice transform and then convert the result to screen coordinates using the standard WinForms Control.PointToScreen method. Here's an example:


NRectangleF bounds = view.SceneToDevice.TransformBounds(shape.Bounds);
Point topLeft = view.PointToScreen(bounds.Location.Round().ToPoint());
Point bottomRight = view.PointToScreen(bounds.RightBottom.Round().ToPoint());


For more information about the coordinate systems used in Nevron Diagram for .NET, check out the Coordinate Systems documentation topic.
By Kevin Harrison - 8 Years Ago
Thanks guys.