The list below describes recent changes and additions to FlowChartX:
New in version 4.9.9
Spatial index
Set the
EnableSpatialIndex property of
FlowChart to create an index of item positions for faster hit-testing and viewport clipping queries. This should greatly improve user interaction and rendering speed for diagrams containing tens of thousands or more items.
VB
Copy Code
|
---|
' it will take some time to populate the diagram with a million nodes, ' but subsequent redraws and hit-tests should be very fast fcx.SelectAfterCreate = False
Dim i As Long Dim j As Long
For i = 0 To 999 For j = 0 To 999 Dim node As box Set node = fcx.CreateBox(20 + i * 80, 20 + j * 80, 40, 40) node.Text = Str(i) & ":" & Str(j) Next j Next i
fcx.FitDocToObjects 20 fcx.EnableSpatialIndex = True |
Note that rendering speed improves only when showing a smaller part of the diagram inside current viewport. Rendering a lot of items at small zoom levels or in overview's fit-all mode will still need a lot of processing, so you might want to apply constraints on minimal zoom level of flowchart and overview controls for large diagrams.
Miscellaneous
New in version 4.9.8
Multiple labels per node
The
NodeLabel class allows multiple captions to be displayed for a single flowchart node of any type. Node labels provide a set of properties allowing full customization of their display and positioning. Label position is defined by specifying a pin point and offset from it, set through
SetCornerPosition,
SetEdgePosition,
SetCenterPosition methods. In addition, the
HorizontalAlign and
VerticalAlign properties of
NodeLabel specify on which side of pin point to draw the label's caption.
For example, following code adds extra labels to top-left and bottom-right corners of a Box:
VB
Copy Code
|
---|
Dim node As box Set node = fcx.CreateBox(50, 50, 100, 80) node.Text = "text" ' centered main text
Dim lb1 As NodeLabel Set lb1 = New NodeLabel lb1.Text = "label 1" lb1.SetCornerPosition 0, 0, 0 lb1.HorizontalAlign = saNear lb1.VerticalAlign = saNear lb1.BackColor = vbRed lb1.TextColor = vbWhite lb1.Margin = 1 node.AddLabel lb1
Dim lb2 As NodeLabel Set lb2 = New NodeLabel lb2.Text = "label 2" lb2.SetCornerPosition 2, 0, 0 lb2.HorizontalAlign = saFar lb2.VerticalAlign = saFar lb2.BackColor = vbYellow lb2.TextColor = vbRed node.AddLabel lb2 |
Miscellaneous
New in version 4.9.7
Mouse wheel
The control now provides built-in mouse wheel handling. By default, rotating the wheel scrolls the view vertically. Users can scroll horizontally by holding down the Shift modifier key while rotating the mouse wheel. The Control modifier scrolls the view in larger amounts (half the viewport width or height depending on scroll direction). Setting the MouseWheelAction property to Zoom makes wheel rotation zoom into the view instead. You could implement your own mouse-wheel logic by setting MouseWheelAction to None and handling the MouseWheel event.
Miscellaneous
- The Opacity property lets you apply semi-transparency to all graphic elements of a diagram item.
- EPicturePos supports new picFitLeft, picFitTop, picFitRight and picFitBottom alignment styles, which resize Picture to fit node's boundaries and align it to respective border.
- The CancelDrag method lets you cancel current mouse interactions.
- The ChangeBehavior method allows changing Behavior value without clearing selection.
- PNG transparency now supported in GDI+ mode.
- The RedrawCacheImage method lets you reset back buffer when you need to change appearance of stationary objects during user interaction.
- MultiProc2 box shape.
- The MoveNodes behavior allows grabbing nodes to drag them without using adjustment handles.
New in version 4.9.6
Registration free deployment
Distribution now includes manifest files for side-by-side / registration free deployment. MindFusion.Diagramming.32bit.manifest describes the 32-bit version of the component, and MindFusion.Diagramming.64bit.manifest describes the 64-bit version. To load the component without registering it, add a dependentAssembly entry to your application's manifest:
manifest
Copy Code
|
---|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="app.exe" type="win32" /> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="MindFusion.Diagramming.32bit" version="4.9.6.0" processorArchitecture="x86" language="*" /> </dependentAssembly> </dependency> </assembly> |
PNG support
The LoadPicture method can load png images, both in classic and GDI+ graphics modes.
Layout improvements
Miscellaneous
New in version 4.9.5
Selection improvements
Flowchart size and scrolling
Miscellaneous
New in version 4.9.4
Flip shapes
The shape of bsShape boxes can be flipped horizontally or vertically. Enable the AllowFlip property and the shape flips when an edge is dragged over its opposite edge. You can get or set current flip state using FlipX and FlipY properties.
![](allow_flip.png)
Arrow improvements
- ArrowsSplittable now works for Bezier links too. Users can insert a new Bezier segment by dragging any point (other than a control point) of a selected link. Adjacent segments can be merged back into a single one by dragging a tangent control point (square adjustment handle) onto a pass-through control point (round adjustment handle).
- IntermArrowHead shapes are now rendered at correct position for Spline links.
Miscellaneous
- KeepGroupLayout property now available in all graph layout classes (previously only in TreeLayout). If KeepGroupLayout is enabled, a group of nodes is treated as single vertex of the graph being arranged, and initial relative positions of group's nodes are preserved.
- The bhPan Behavior value lets you pan the view without holding down modifier keys.