I need a faster way to draw images and render them

I am working on an application that allows you to draw images. With every brush step, the images are drawn towards my canvas. I basically have a canvas with a collection of Image controls. Performance is not as good when the number of images increases.

Also, rendering the canvas with RenderTargetBitmap.Render sometimes causes out of memory depending on the number of images in my canvas and the dimensions of my canvas and the images I draw with.

Is there a solution? I can rasterize after every brush stroke, rendering all of these images on my canvas, clearing the canvas, and then painting the re-processed image onto the canvas. It will probably take too long, but has to wait between each brush stroke, doesn't sound too good.

So what are my options? Can I do it all with WriteableBitmap? Is it possible to add multiple images to one WriteableBitmap, and fast? Or is there any library I can use to draw and manipulate (scale, translate, rotate) images?

Here's what I am currently doing by creating canvas image controls: enter image description here

Edit : I went ahead and implemented this rasterization method described above. It's actually not that bad.
256x256 canvas: http://i.minus.com/iFXnyYg3N3qjx.gif
2048x2048 canvas: http://i.minus.com/i5GId8iM8hU28.gif

The demo was tested on a fairly old PC and I'm aiming for the minimum requirement. I also tested it on a newer PC and it runs quite smoothly even at 2048x2048. I would still like it to be faster. I thought I could render the canvas on a background thread, but I'll have to figure out a way to paint the images while the canvas is rendering. Another option I was thinking about is rendering the canvas piece by piece on different threads in parallel (if possible in C #). So, for example, a 2048x2048 canvas could be displayed as four 512x512 sections at the same time. It was also suggested to learn OpenGL and start from scratch. Can't you do gui in WPF for openGL app?

+3
c # image image-processing wpf graphics


source to share


No one has answered this question yet

Check out similar questions:

12
Simulate brush strokes for painting
2
openGL - drawing a grid of quads and hand painting them
1
Java create brush action
1
Draw liquid set of circles in real time with WriteableBitmapEx
1
Drawing a drawing drawing from a different theme?
0
WPF - How to Create a Tile Map Editor
0
scaling images in libgdx only once
0
HTML5 Canvas Context.drawImage not showing
0
Building on existing images in Android
0
Realtime Opacity Mask



All Articles
Loading...
X
Show
Funny
Dev
Pics