Jim flip wrote:
I would like to render natively i.e. via a C dll that I have wrapped
So I want my c code to receive a buffer that it can render to, and then
have WXruby display this memory buffer/bitmap.
A drawing context (whether an in-memory buffer, an on-screen canvas, or
a printout) is represented by a DC  instance in wxRuby. MemoryDC is
the specific class for in-memory buffers.
However the API and class is cross-platform and specific to WxRuby, so
you’re not going to be able to pass this in directly to your dll. You
don’t give a lot of info about the way your API works, but I’d think
probably the easiest way would be to have your dll render to a ruby
String in a recognised image format (wxRuby understands PNG, TIF, JPG,
BMP, TGA) then wrap this in a ruby StringIO object.
Call Wx::Image.read  to load this image into an object, then do
Wx::Bitmap.from_image to convert it to a windows bitmap that can be
rendered on screen. Lastly, simple draw this onto a window surface using
its paint method. Have a look at the example in samples/drawing/image.rb
to see the basics of writing an image to screen.
Can anyone advise me what would be the best method for doing this, to
save me having to find out the hard way.
This should probably work, but there’s a few other options should this
not be suitable. Also have a search through the archives as there have
been a few threads about rendering images from external libraries (eg