Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to draw graphics as efficiently as possible in WPF

Tags:

I am creating a tool which relies heavily on graph-node trees. The current implementation is done in Java and I'm porting it to a generic code-base on C#, so it can be used by various rendering implementations and also because I want to use the power of WPF for a user-friendly interface.

After browsing around for a day, I came across various methods to draw Vector-graphics through WPF.

This guy speaks about different layers within WPF developers can choose from. As I want to use WPF PURELY for his rendering at first, I want to work on the "Visual Layer".

I then came across things like: DrawingVisual, GeometryDrawing, FrameworkElement / UIElement / Shapes

So, I'm a bit overwhelmed by all the different implementations that do eventually the same in totally different ways.

The Graph-Node library has been ported to C# already with all it's logic (including collision detection and dragging with mouse). As it is made with graphic-renderers in mind (like XNA, SlimDX, OpenTK, etc.), what would be the best way in terms of performance to implement a WPF renderer (as in, it will draw whatever the graph library tells it to draw?

Basically, the resulting WPF control acts as a canvas, but it has to be SUPER lightweight and not have any neat WPF features besides providing me a way to draw my circles, lines and other shapes :)

EDIT:

I basically want to know: What is the way to go? Do I extend Canvas as "Host" for my graphics and then add my custom implementation of a UIElement? Or can I have one class which can draw EVERYTHING (as in, one mega super ultra graphic). Much like overriding OnPaint in GDI or Paint-method in Java (which gives a Graphics object to do everything with).

like image 491
Lennard Fonteijn Avatar asked Sep 09 '11 19:09

Lennard Fonteijn


People also ask

Which graphics technology does WPF utilize?

WPF uses DirectX and attempts to provide a consistent programming model for building applications.

Why is WPF application slow in performance?

While WPF is over a decade old and has been improved greatly over the years, there are still several areas that can suffer from poor performance. The reasons for this poor performance include things such as bad coding practices, broken bindings, complex layouts, the lack of UI virtualization, and much more.

What is rendering in WPF?

A rendering tier defines a level of graphics hardware capability and performance for a device that runs a WPF application.


1 Answers

I'd recommend reading Optimizing Performance: 2D Graphics and Imaging.

Basically, Drawing objects will be lighter weight than Shapes, in general. This is probably what you want to use.

like image 107
Reed Copsey Avatar answered Oct 15 '22 05:10

Reed Copsey