Kael Rowan

Foundations of Elegant Code

Browse by Tags

Tagged Content List
  • Blog Post: ZoomableCanvas

    ZoomableCanvas is the Panel that displays almost all of the elements in Code Canvas . Code Canvas is actually made up of several layers of ZoomableCanvas es that are stacked on top of each other, and they are synchronized by simply sharing the same values for Scale and Offset . Scale and Offset are the...
  • Blog Post: ZoomableCanvas: Preface

    When I started writing Code Canvas back in 2008, I quickly realized that using a simple ScaleTransform on an existing Canvas would not produce the experience that I wanted. This was mostly because the elements on my canvas have many fine details such as the dog-ears on files, the icons next to identifiers...
  • Blog Post: PriorityQuadTree

    Chris Lovett has a written a cool Virtualized WPF Canvas that lets you pan and zoom around a huge canvas full of shapes, and it only creates those shapes which can be seen on your screen at the time (i.e. within your viewbox of the canvas).  As you pan around, it destroys the shapes that are no...
  • Blog Post: VirtualPanel

    Virtualization, according to the documentation for WPF’s built-in VirtualizingStackPanel , refers to a technique by which a subset of user interface (UI) elements are generated from a larger number of data items based on which items are visible on-screen.  This is a great feature since WPF cannot...
  • Blog Post: Rect.Intersects and IsDefined

    When working on the PriorityQuadTree , most of the code I was reading and writing revolved around rectangle intersection.  Rect defines an IntersectsWith method, but it doesn’t work with rectangles that are infinitely wide or tall like new Rect ( Double .NegativeInfinity, Double .NegativeInfinity...
  • Blog Post: Snapshooter

    I’ve been working on a very large-scale canvas application for a while now, and I finally checked in the first working prototype today.   The biggest challenge for this application is that the elements on the canvas are very rich.  They aren’t just simple boxes and lines.  Some of...
  • Blog Post: ArithmeticConverter

    Using a declarative language like XAML to define a UI feels like the right thing to do, but it has its drawbacks. I appreciate that disallowing procedural code eliminates race conditions and side effects, but what about purely functional operations like simple arithmetic? The lack of simple math operations...
  • Blog Post: Presentation.More

    In the same vein as System.More , I've also created a Windows Presentation Foundation counterpart called Presentation.More.  And just like System.More defines classes in the same System namespaces as System.dll and System.Core.dll, Presentation.More also defines classes in the System.Windows namespaces...
Page 1 of 1 (8 items)