Nevron Forum

Transform Shape Bounds to screen bounds

https://www.nevron.com/Forum/Topic9609.aspx

By Kevin Harrison 1 - Tuesday, March 8, 2016

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 1 - Thursday, March 10, 2016

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 - Saturday, March 12, 2016

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 1 - Saturday, March 12, 2016

Thanks guys.