[Mono-list] Double-buffered graphics solutions in mono

Stuart Ballard sballard@netreach.com
Thu, 12 Feb 2004 12:26:33 -0500

I'm looking for a way to do a simple double-buffered graphics display 
that will work with Mono on Linux.

I know how to do it (at least so it works, even if I'm not doing it 
"right") in WinForms, but I heard that WinForms is currently just broken 
in Mono, and besides, it's not the world's most elegant GUI toolkit anyway.

I'm thinking that GTK# is probably the way to go, but I'm not sure where 
to start looking for documentation on how to do what I'm trying to do, 
because I imagine that in the C world the things I need are more 
GDK/Cairo level than GTK+ itself. At this point, what I need is:

- Create a window that contains a drawable area (ideally leaving some 
space outside the drawable area that I can put normal controls into later)
- Draw geometric shapes (circles and lines) into that drawable area
- Swap out one frame and swap in a new one with the circles and lines in 
a new position, flicker-free

In WinForms I was able to do this by creating a PictureBox, drawing to 
an Image offscreen, and then swapping it in by the Image property of 
PictureBox. I'm not sure if this is the right way, but it worked. 
Essentially I was doing the double-buffering entirely manually.

On Mono, I'm not sure how System.Drawing.Image would integrate with 
GTK#, or whether I even want it to - perhaps there's a better way of 
doing double-buffered drawing in a GTK# environment. But I don't even 
know whether I should start looking in the GTK# docs, or the GTK+ docs, 
or the GDK docs.

If anyone could give me some tips, or better yet, suggest a sample 
application which does vaguely what I'm looking for that I could look at 
the sample code of, I'd really appreciate it. I'd like something that's 
actually going to work with recent mono, despite the 
libgdiplus/Cairo/System.Drawing/WinForms upheaval - or better yet, work 
with the Jan 14th snapshots as packaged in Debian, which *do* include 
GTK# :)

Stuart Ballard, Senior Web Developer
NetReach, Inc.
(215) 283-2300, ext. 126