Search the Community

Showing results for tags 'wpf'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


    • Announcements
  • GraphX for .NET (open-source)
    • Updates & Releases
    • Discussions
    • Documents & Tutorials
    • Bug reports
    • Redirect to GraphX repository on GitHub
  • General Discussions
    • General software discussions
    • Monogame/XNA
  • International Discussions
    • Обсуждения на русском
  • News & Announcements
  • Discussions

Found 16 results

  1. Now also on Twitter: Latest source code with specified changes is available on GitHub Version 2.3.8 WIP DETAILED CHANGELOG: - Implemented multiple labels logic for edges. Now you can display multiple labels across the edge - Added LabelHorizontalOffset property for labels which offsets labels along the edge given some offset value in total edge length percent CODE CHANGES: - Properties ShowLabel,LabelVerticalOffset,AlignLabelsToEdges moved from EdgeControlBase to EdgeLabelControl class - Property AlignLabelsToEdges renamed to AlignToEdge - Property EdgeControlBase.EdgeLabelControl renamed to EdgeLabelControls and now has IList<IEdgeLabelControl> type - Added new method IList<SysRect> EdgeControlBase.GetLabelSizes() - Added new method IList<IEdgeLabelControl> EdgeControlBase.GetLabelControls() - GraphArea.ShowAllEdgesLabels() method now has one-time effect and will not be reapplied after relayout - GraphArea.ShowAllEdgesLabels() method now has one-time effect and will not be reapplied after relayout - GraphArea.EdgeLabelFactory is now setup up with default factory generating one AttachableEdgeLabelControl - Label factory method CreateLabel() now returns IEnumerable<TResult> to accomodate multiple labels generation during single factory pass OBSOLETE AND REMOVED STUFF: General - Old style arrows are now not supported - Old style edge labels (EdgeLabelControl) are now not supported, make sure to remove it from XAML templates and update your code to use AttachableEdgeLabelControl EdgeControlBase - LabelAngle - GetLabelSize() - SetCustomLabelSize() EdgeControl - LabelMouseDown event removed Other: - showLabel parameter has been removed from all EdgeControl constructors and factories
  2. RELEASE 2.3.6 DETAILED CHANGELOG: + Added edge endpoint calculation for rotated vertex that use ellipse, circle and rectangle math shape + Added VertexControl::LabelAttached and LabelDetached events which fires when new label is attached to VertexControl or detached from it + Added new parameter to GraphArea::UpdateParallelEdgesData(Dictionary<TEdge, EdgeControl> edgeList) to be able to specify edges list to parse for parallelization instead of full edge list parse + Added support for object visbility and attachable labels to GraphX serialization data + Added ZoomControl::ResetKeyBindings() method to clear all (incl default) set key bindings + Fixed ZoomControl dynamic content switch to corectly refresh viewfinder + Improved ZoomControl handling with disabled animation + Renamed ZoomControl::IsAnimationDisabled to IsAnimationEnabled and changed the logic according the modification + Renamed ZoomControl::MaximumZoomStep to ZoomStep and updated description + Implemented easy ZoomControl key bindings with BindKey() method and exposed base commands for zoom and pan actions to be able to bind keys for them + Some class refactoring Go to the archive & sources download page NuGet version is also available
  3. We appreciate your feedback on features and functionality you miss in GraphX. In order to further improve it we want to find out what popular features we can implement. It can be almost anything: new algorithm, new platform support, visualization features, enhanced templates, small tweaks etc. Please feel free to post your suggestions and thank you!
  4. Here we go with the new 2.1.8 release of the GraphX library. This release fixes many bugs and brings many new features such as image based edge pointers, async op cancellation feature, new graph editor showcase and more! RELEASE 2.1.8 + Added basic support for Image based edge pointers. Introduced new object for EdgeControl template: [WPF, METRO(bugged)] 1. EdgePointerImage class with name "PART_EdgePointerImageForSource" - marks edge source pointer (new!) 2. EdgePointerImage class with name "PART_EdgePointerImageForTarget" - marks edge target pointer Look in GeneralTemplate.xaml of ShowcaseApp.WPF project. Added rotation support for image based edge pointers + Added extensibility to corresponding controls by inheriting from IEdgeLabelControl and IEdgePointer [WPF, METRO] + Added extensibility to corresponding controls by inheriting from IVertexLabelControl [WPF, METRO] + Added support method GraphArea::GetVertexControlAt(Point position) to get VC by coordinates [METRO, WPF] + Added VertexControl::GetCenterPosition() method to get vertex center position instead the default top-left [WPF, METRO] + Added new showcase example: Templates/Graph editor [WPF] + Added new option GraphArea::LogicCoreChangeAction which defines what action will be taken on LogicCore property change. You can rebuild graph now. [WPF, METRO] + Added new async calculation cancellation feature [WPF, METRO] thanks to jorgensigvardsson + Added new property EdgeLabelControl::DisplayForSelfLoopedEdges which is self explaining [WPF, METRO] + Fixed edge labels display for self looped edges [WPF, METRO] + Fixed annoying data binding error in ZoomControl slider binding [METRO, WPF] + Fixed ZoomControl unresponsivness after startup (prev needed to change zoom/translation first to work fine) [WPF,METRO] + Fixed ZoomControl::Zoom property bug on empty content window resize [WPF, METRO] + Fixed dynamic graph showcase example first vertex auto zooming onto [WPF] + Fixed some issues in ShowcaseApp.WPF + Fixed GraphArea::DeserializeFromFile() logic and filestorage logic to properly restore internal data for loaded graphs [WPF, METRO] + Fixed calculation of label control position and angle [WPF, METRO] thanks to jorgensigvardsson + Implemented EdgeControl::LabelVerticalOffset property as dependecy [WPF, METRO] + Updated default control templates to include some new properties setup by default [WPF, METRO] + Optimized showcase app media files + Improved extensibility by making some methods virtual for EdgeLabelControl, VertexLabelControl, EdgeControl !Breaking changes + Renamed and changed to Enum - ZoomControl::UseAbsoluteZoomOnMouseWheel to MouseWheelZoomingMode [METRO, WPF] + Expanded EdgeControl event args with mouse and keyboard modifiers [WPF] + Moved all WPF interfaces to GraphX.Controls.Models.Interfaces namespace and all METRO interfaces to GraphX.METRO.Controls.Models.Interfaces [WPF, METRO] + Edge rotation now needs additional modification for all custom EdgeLabelControl templates. Please add: <Setter Property="RenderTransformOrigin" Value="0.5,0.5" />[WPF, METRO] + Due to new calc cancelation feature the following has been changed: - IExternalEdgeRouting, IExternalLayout, IExternalOverlapRemoval interfaces and different algorithm base classes now implement Compute(CancellationToken cancellationToken) method with an additional param - METRO now works only in async mode. Postfix Async has been added for GraphArea graph generation and relayout methods. Go to the archive & sources download page NuGet version is also available
  5. New version 2.1.7 has been released and contains some bug fixes along with the new shiny ShowcaseApp.WPF application as the replacement of the old showcase app. Expect it to be filled with new examples soon enough. Also his release contains major (and some breaking) changes to the solution structure. Changelog: + Added new ShowcaseApp.WPF with mostly the same functionality as before but in a new nutshell and with refactored code. + Added some new exceptions for GraphArea on invalid or insufficient data [WPF,METRO] + Addded automatic default params generation for GXLogicCore if default algorithm was changed and default params property is null + Fixed async calc not being aborted on invalid data (can cause crash) [WPF,METRO] + Implemented VertexControl::ShowLabel property as dependecy for templating purpose [WPF] + Fixed vertex label display [WPF] + Implemented IOverlapRemovalParameters properties setters to be able to change params easily[ALL] + Made EdgeBase::RoutingPoints property virtual in case you want to override it and add custom serialization attributes (as was the issue with YAXLib)[ALL] !Breaking changes + Renamed VertexControl::MathShape property to VertexShape for template bindings to work [WPF, METRO] + Removed YAXLib project from solution and its dependencies from GraphX projects except showcase project. This will make GraphX independent from this 3rd party lib. [WPF] The cost is that there is no built in FileServiceProvider anymore but you can easily create your own using provided interface or use YAXLib example from showcase app. One less additional dll file Go to the archive & sources download page Go to the NuGet version download page
  6. Hello everybody, For two weeks I'm looking up a solution for a simple problem. I have a VertexControl style which is declared in my ResourceDictionary file. And I want to use a property that is in VertexControl.Vertex (Attribute name is RightWordColor). <ControlTemplate TargetType="{x:Type gxl:VertexControl}"> <Grid> <Border Background="{TemplateBinding Background}" CornerRadius="10,10,10,10" BorderThickness="3" Padding="{TemplateBinding Padding}"> <!-- Here I want to have the RightWordColor attribute for my border. --> <Border CornerRadius="10,10,10,10" BorderThickness="3"> <local:MyVertex DataContext="{TemplateBinding Vertex}"> </local:MyVertex> </Border> </Grid> <ControlTemplate.Triggers> <Trigger Property="gxl:HighlightBehaviour.IsHighlightEnabled" Value="True"> <Setter Property="BorderThickness" Value="7"/> <Setter Property="Background" Value="Gold"/> </Trigger> <Trigger Property="gxl:HighlightBehaviour.Highlighted" Value="False "> <Setter Property="Background" Value="#FFE3E3E3"/> <Setter Property="BorderThickness" Value="5"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> I'll be pleased if you can come up with a solution. Thnaks in advance! kindrashunt
  7. Please feel free to show us your opinion on the subject. Remember, that your vote can affect the future of GraphX development. If you have other suggestions for porting you can freely share them in this thread. Thanks! PS: Stage 2 incoming
  8. Most notable addition to GraphX in this release are vertex lables implementation and Nuget dependencies support. All other changes mostly consist of bug fixes and misc improvements. Change log: + Added vertex control labels with following functionality: + 2 available positioning modes: by sides or by coordinates + Always attached to vertex and moves with it + Rotation angle support + Same template logic as in EdgeLabelControl + Added key modifiers to vertex event args + Added XAML templates usage example in WF project + Added new layout type Custom. When set layout algorithm calculation is skipped completely and manually added data is used for OR and ER algorithms (if any). + Added (reintroduced) GraphArea::SideExpansionSize property which gets or sets additional space for GraphArea borders. Useful for zoom adjustments when custom text or controls which are not used in size calculations must fit into the zooming. + Added IGraphControlFactory-Interface and Implementation for Edge and Vertex controls creation (thanks to Paul Mandalka) + Added simple Nuget-Package specification for GraphX (use createPackage.bat to create the nuget package for GraphX) (thanks to Paul Mandalka) + Added new ZoomControl::ZoomAnimationCompleted event (thanks to Paul Mandalka) + Fixed hidden edges update on vertex drag + Fixed PrintHelper::ExportToImage method to use DPI-Settings for Image Rendering (thanks to Paul Mandalka) + Fixed labels rendering for parallel edges. Now they are displayed separately for each edge. + Fixed async calculations being broken due to LogicCore property became dependency + Fixed ViewFinder not deriving ZoomControl content background + Fixed edge label update on alignment change + Fixed self-looped edges handling in GraphArea::GenerateEdgesForVertex() method + Fixed bugs with edge routing calculation in some cases + Fixed: Graph-Area LogicCore Property was registered using GraphAreaBase which could cause a problem (thanks to Paul Mandalka) + Fixed visual properties recovery terminating template values + Fixed Sugiyama and EfficientSugiyama algorithms calculation with only one vertex + Implemented some properties as dependencies + Implemented EdgeControl::IsSelfLooped property as read-only dependency property. + Reworked EdgeLabelControl inner logic. Should now be more flexible and performance efficient. + Reworked main objects hierarchy to use more interfaces for loosened conditions + Some code refactoring. Minor performance improvements. VISIT DOWNLOADS PAGE
  9. Along with the bug fixes this version brings some new functionality. For example, GraphArea now can restore (reapply) visual properties (that was previously set using GraphArea methods such as GraphArea::SetVerticesDrag()) for VertexControl and EdgeControl objects. You can also switch this off for better performance or manual handling. Also some new methods and properties has been added to simplify work with GraphX, read the change log for details. Change log: + Added GraphArea::AddCustomChildControl() and GraphArea::RemoveCustomChildControl() methods to make the possibility to add any custom controls that are not vertex or edge. + Added ZoomControl::ToContentRectangle() method which translates screen rectangle coordinates to content rectangle coordinates + Added correct endpoints rendering for parallel edges on a rectangular vertex shape (thanks ro bleibold) + Added some hooks for ZoomControl to notify Presenter::RenderTransform on scale/translation changes. Now bindings to that property are correctly refreshed. + Added additional handling of custom objects in GraphArea (eg. clearing) + Added dependency property for GraphArea::LogicCore + Added new property GraphArea::EnableVisualPropsRecovery. Gets or sets if visual properties such as edge dash style or vertex shape should be automaticaly reapplied to visuals when graph is regenerated. Turning this off can save a bit of performance if you don't use custom values. + Added new property GraphArea::EnableVisualPropsApply. Gets or sets if visual properties such as edge dash style or vertex shape should be automaticaly applied to newly added visuals which are added using AddVertex() or AddEdge() or similar methods. Turning this off can save a bit of performance if you don't use custom values and making many manual edge/vertex create or remove operations. + Added GraphArea::SetVerticesHighlight() and GraphArea::SetEdgesHighlight() methods for easier highlight feature handling. + Improved some showcase code + Improved GraphArea code performance (slightly) + Fixed minimap rectangle drag issue + Fixed issue with ZoomControl area selection by Ctrl+Alt+Click + Fixed issue with GraphArea::VertexSelected event + Fixed issue with inproper overlap removal work (that issue affected some algorithms vis) using new coordinates system. + Fixed issue with incorrect rendering of parallel edges (thanks to bleibold) - GraphArea::Children property has been hidden. Use EdgesList and VertexList properties and corresponding methods instead. VISIT DOWNLOADS PAGE
  10. Finally GraphX v2 has made it to the public and is now in the process of active polishing. New project architecture easily allows to perform porting GraphX to different platforms as visualization has been separated from logic. Also the logics module can now be use independently of GraphX to calculate graph layouts and edge routings for custom projects. Currently there are no officialy released ports but there is work in progress for Silverlight and Windows 8 solutions. There are no estimate dates for port releases as there is no exact information will it also be an open-source projects or projects on the paid basis. Most notable features for this version are: Portable architecture support. Still testing, but all of the core features except file handling and serialization has been made PCL compliant. Separated algorithms in standalone GXLogicCore class. Now you can easily use all GraphX algorithms separately from visual stuff. ZoomControl enchanced. Merged most viable features of ZoomControl and Zoombox into one control and made smooth graph representation while dragging vertices. Parallel edges support and rotated edge labels. Further enchanced edge visualization by implementing parallel edges visualization between the same vertices and labels that are aligned to the edges by angle. Thanks to all of you who support GraphX on the road to perfection! This adventure would not be so exciting without you
  11. Finally GraphX v2 has made it to the public. Though it don't have much new features it definetly bring new capabilities and architectural improvements. Starting from this product version it is now possible to move forward the porting solutions with ease. Currently there are no officialy released ports but there is work in progress for Silverlight and Windows 8 solutions. Most notable features for this version are: Portable architecture support. Still testing, but all of the core features except file handling and serialization has been made PCL compliant. Separated algorithms in standalone GXLogicCore class. Now you can easily use all GraphX algorithms separately from visual stuff. ZoomControl enchanced. Merged most viable features of ZoomControl and Zoombox into one control and made smooth graph representation while dragging vertices. Parallel edges support and rotated edge labels. Further enchanced edge visualization by implementing parallel edges vis between same vertices and labels aligned to the edge by angle. There are some key moments that you must be aware of that can break old v1 projects. They are: GraphArea now uses coordinates system that place objects by TOP-LEFT corner. Old system operated by object CENTER coordinates. So you need to check your logic to be sure that you operate with coorect coordinates. GraphArea canvas object real size now always (10, 10) so if used separately from ZoomControl it must be centered in container. No matter what its children are placed relatively so the whole picture looks the same. Zoombox has been removed. Use enchanced ZoomControl instead. If you lack any features, please let me know. Also currently it is not possible to use ZoomControl for hosting objects other than GraphArea out of the box. If you need it for other purposes ypou have to modify its interaction logic with GraphArea. All logic has been moved from GraphArea to GXLogicCore. You need to modify calls to methods and properties in your code, please look at the examples provided in source code. Source code and documentation updates will follow soon. Changelog: + Spearated GraphX into the 3 projects: GraphX.Common, GraphX.Logic and GraphX.Controls. Each project serves its own purpose. GraphX.Logic contains all the logic and algorithms GraphX.Common contains common objects between logic and visual controls GraphX.Controls contains visual controls and all associated classes + Added GraphArea.LogicCore property that must be set in order to be able to work with GraphArea + Added parallel edges logic call in GraphArea.UpdateAllEdges() method + Added some code improvements and corrections, made some classes internal, abstract or sealed + Added EdgeControl::AlignLabelsToEdges and EdgeControl::LabelVerticalOffset properties that implements edge labels alignment to edges at different angles. Labels now can be placed at the same angle as edge is drawn and optionaly offseted up or down to not overlap the edge itself. + Added some recently implemented features to Showcase app + Added optional param to GraphArea::GenerateAllEdges() that enables GraphArea layout update before edges calculation. True by default. + Added minimap from Zoombox to ZoomControl and changed some of its features. + Added new method ZoomControl::ZoomToContent() that should be used instead of ZoomTo() method + Added ZoomControl display in VS design view with minimap preview + Slightly improved rendering performance for large graphs + Fixed long living issue with zoom content resize and vertex drag which involves following global changes: + Correct GraphArea size rectangle can now be only determined by GraphArea::ContentSize property whcih contains rectangle that includes all viusuals added. GraphArea visual size remains ALWAYS intact at (10,10). + Now all vertices and edges positioned in GraphArea using TOP-LEFT corner as the position coordinates (previously coordinates was pointing at the object center). + ZoomControl now closely tied with GraphX, though it can be made universal + Fixed edge labels rendering issue + Fixed some showcase app exceptions + Fixed edge labeling showcase example + Fixed GraphArea in design diplay mode + Fixed ParameterizedLayoutAlgorithm exception (thanks to thinkJD) + Fixed parallel edges calculations in case of opposite-directed edges (thanks to thinkJD) + Fixed invalid parallel edges detection in some cases (thanks to bleibold) - Image export currently supports only ZoomControl visible area export - Moved ImageType enum into GraphX namespace - Moved all properties associated with logic from GraphArea to GXLogicCore class - Removed Zoombox from project completely (now only ZoomControl is supported and being actively enchanced) VISIT DOWNLOADS PAGE
  12. Recently i've found this excellent piece of code on the web and decided to share it here on the forums. It allows to host Monogame engine inside WPF applications with no freezes or input problems. I havn't used this for myself yet just looked how it works but it looks realy promising Copyright
  13. InfoQ has posted an interview recently about graphs and GraphX in particular. You can read an article here: That is another little reason to be proud of the work that has been done
  14. Yes, i've decided to name it GraphX v2 at the moment From the current milestone i see following features that makes difference: Separate libraries design - all algorithms and logic are in the standalone library that can be used separately from GraphX. PCL version - portable compact libraries can be hot-referenced in Windows (Framework 4.0), Silverlight 5, WindowsPhone 8 and Windows 8 applications. Silverlight platform support There is no alpha at the moment but if you are interested, you can contribute by following matters: PM me if you have any cool zoom control library for Silverlight. It is real pain to transfer ZoomBox to silverlight PM me if you're interested in Silverlight XAML animation and visualization development. Well, some SL limitations is a pain for me
  15. You can look for an actual GraphX overview here. FAQ Q: Is it possible to configure GraphX to show multiple/parallel edges? A: Yes you can do it. By default when you set GraphArea.LogicCore.EnableParallelEdges property to true then all edges will be parallel if they are belong to the same nodes. If you want ONLY specific edges to be parallel you must manually set EdgeControl.CanBeParallel property of the edges. All edges with this property set to false will not be parallelized. But currently parallel edges are limited to edges without routed path e.g. edges built without EdgeRouting algorithms applied. Q: I'm wondering if this library works in a windows forms (WinForms) application? A: Sure. Use GraphArea.EnableWinFormsHostingMode property to enable WinForms support using interop. Additional info can be found in example project provided in library sources. Q: I made project almost similar to provided examples but visual controls seems doesn't show or edges are displayed incorrectly! What can be the reason ? A: Check that you're not creating your graph inside the WPF window/control constructor. If so use your window or comtrol Loaded event instead. Q: How to display background image for GraphArea that is correctly transformed by ZoomControl? A: Q: How to use or show vertex/edge labels? A: Look here
  16. Changelog: + Changed ExportToImage() parameters: added useZoomControlSurface param that enables zoom control parent visual space to be used for export instead whole GraphArea panel. Using this technique it is possible to export graphs with negative vertices coordinates. + Added common interface IZoomControl for all included Zoom controls + Added new method GraphArea.GenerateGraph() that accepts only optional parameters and will use internalGraphArea.Graph property as the source (assuming it was already set earlier or exception will be thrown) + Added new method GraphArea.SetVerticesDrag() that controls edge drag mode for all vertices that are added into the GraphArea + Added new method GraphArea.SetVerticesMathShape() that sets math shape for all vertices that are added into the GraphArea + Added Windows Forms interop compatibility mode. You must specifyGraphArea.EnableWinFormsHostingMode property for this to work. + Added edge parallelization as the post-process algorithm + Added GraphArea.EnableParallelEdges and GraphArea.ParallelEdgeDistance properties + Added EdgeControl.CanBeParallel property + Fixed some code definitions Download this release