Articles in this section
Category / Section

SizeToContent option with different view origin

3 mins read

SizeToContent option with different view origin

Syncfusion® Diagram supports the SizeToContent option with a 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 to True, and you also need to set the BoundaryConstraintsEnabled property to False.

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)
    {
        // Calculates 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

 

Conclusion

I hope you enjoyed learning about SizeToContent option with different view origin.

You can refer to WinForms Diagram feature tour page to learn about its other groundbreaking feature representations and documentation, and how to quickly get started for configuration specifications. You can also explore our WinForms Diagram example to understand how to create and manipulate data.

For current customers, you can check out our components from the License and Downloads page. If you are new to Syncfusion®, you can try our 30-day free trial to check out our other controls.

If you have any queries or require clarifications, please let us know in the comments section below. You can also contact us through our support forumsDirect-Trac, or feedback portal. We are always happy to assist you!

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please  to leave a comment
Access denied
Access denied