)
We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. (Last updated on: June 24, 2019).
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

SizeToContent option with different view origin

Platform: WinForms |
Control: Diagram |
Published Date: November 27, 2015 |
Last Revised Date: June 2, 2019

SizeToContent option with different view origin

Syncfusion Diagram supports SizeToContent option with different view origin. If your requirement is to limit the diagram size based on the bounds of the node availability the sizeToContent property must be set as True and also need to set false for the BoundaryConstraintsEnabled property.

The below code snippet shows how to limit the diagram’s size based on the bounds of the node availability.

[C#]

diagram1.Model.SizeToContent = true;
diagram1.Model.BoundaryConstraintsEnabled = false;

 

[VB]

diagram1.Model.SizeToContent = True
diagram1.Model.BoundaryConstraintsEnabled = False

 

If the requirement is to achieve the old behavior (i.e. the Left Top corner will remains in the same place) it is necessary to customize the Controller. In the customized Controller class need to override the GetBoundingRect method in order to achieve old behavior.

The below code snippet shows how to achieve the old behavior by overriding GetBoundingRect method.

[C#]

public override System.Drawing.RectangleF GetBoundingRect(System.Collections.ICollection nodes, MeasureUnits units)
        {
            Model model = this.Model;
            // get model node collection
            NodeCollection modelNodes = Model.Nodes;
 
            // get content bounds
            RectangleF rcNodeBounds;
            RectangleF returnBounds = new RectangleF(m_originoffset.ToPointF(), SizeF.Empty);
 
            foreach (Node node in modelNodes)
            {
                //Caluculates the total bounds of the model content
                rcNodeBounds = ((IUnitIndependent)node).GetBoundingRectangle(model.MeasurementUnits, false);
                returnBounds = RectangleF.Union(returnBounds, rcNodeBounds);
            }
            //Updates the position of the origin based on the model content.
            m_originoffset.Width -= returnBounds.X;
            m_originoffset.Height -= returnBounds.Y;
 
            //Updates the Model's size
            returnBounds.Width = Math.Max(model.MinimumSize.Width + m_originoffset.Width, returnBounds.Width);
            returnBounds.Height = Math.Max(model.MinimumSize.Height + m_originoffset.Height, returnBounds.Height);
            return returnBounds;
        }

 

[VB]

Public Overrides Function GetBoundingRect(ByVal nodes As System.Collections.ICollection, ByVal units As MeasureUnits) As System.Drawing.RectangleF
   Dim model As Model = Me.Model
   ' get model node collection
   Dim modelNodes As NodeCollection = Model.Nodes
 
   ' get content bounds
   Dim rcNodeBounds As RectangleF
   Dim returnBounds As New RectangleF(m_originoffset.ToPointF(), SizeF.Empty)
 
   For Each node As Node In modelNodes
    'Caluculates the total bounds of the model content
    rcNodeBounds = (CType(node, IUnitIndependent)).GetBoundingRectangle(model.MeasurementUnits, False)
    returnBounds = RectangleF.Union(returnBounds, rcNodeBounds)
   Next node
   'Updates the position of the origin based on the model content.
   m_originoffset.Width -= returnBounds.X
   m_originoffset.Height -= returnBounds.Y
 
   'Updates the Model's size
   returnBounds.Width = Math.Max(model.MinimumSize.Width + m_originoffset.Width, returnBounds.Width)
   returnBounds.Height = Math.Max(model.MinimumSize.Height + m_originoffset.Height, returnBounds.Height)
   Return returnBounds
End Function

 

Please refer the below attached sample.

Sample

2X faster development

The ultimate WinForms UI toolkit to boost your development speed.
ADD COMMENT
You must log in to leave a comment

Please sign in to access our KB

This page will automatically be redirected to the sign-in page in 10 seconds.

Up arrow icon

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

Live Chat Icon For mobile
Live Chat Icon