James,
Thanks for the response. The normal response once people see the VB.Net is to
call me stupid and tell me how this can only be done in C++ and/or Java. Glad to
see I haven't heard that here. additional comments below...
[quoted text, click to view] > For interactive you need a client side application. My advice is to ignore
> GDI+ double buffering and draw on a Bitmap. For a client app this can be
> drawn to the screen, for a web user this can be converted to JPEG/PNG etc (I
> recommend PNG) and streamed to the browser. The performance of GDI+ is
> quite acceptable with a Bitmap created 32 bit pargb.
It is pretty much a given that interactive graphics needs a client side
application.
For the web stuff, it is going to be limited to view only, with support for
pan/zoom/etc.
It was my thought that drawing to the Bitmap would be best, glad to hear you
concur.
Web graphics would be PNG. JPEG is insufficient for Vector graphics, too fuzzy.
Would it be much faster to render the Bitmap in memory directly and then display
the resulting Bitmap than to use the Graphics object to "draw" the picture in
memory?
[quoted text, click to view] > An addiitonal option is to write SVG code for the web client. The GDI
> graphicspath construct can be converted to an SVG definition quite easily.
> You get much lower bandwidth requirements but it is more work and the client
> will need an SVG plugin.
I had read the spec for SVG a long time ago, back when they called it "Stylable
Vector Graphics". Not sure when they started calling it "Scalable" instead.
However, I think Scalable and Vector are somewhat redundant. And one of the big
points is that they proposed it be Stylable on the client side, which would not
have been good for this. I will need to revisit the new specs.
The issue with that is that what I need to display is not like the typical
single file CAD type stuff. Otherwise I could just use one of the dozen or so
commercial products already out there. I'm really building a "GIS Emulator",
where the data is stored in various CAD formats and tiled by map areas. This
means I'm dealing with tens of thousands of underlying map tiles in some cases.
As the user changes view perpective, the actual data to be displayed needs to be
composed from these underlying maps.
Vector on the web client is great if you are zoomed in tightly in an area. But
as they zoom out, you quickly reach a point of diminishing returns as the vector
element cache can quickly become huge. So I am thinking that if I stream the
resulting rendered image, then user will get more of a consistent experience
regardless of zoom ratio. Also, (my logic may be flawed here) but since the
underlying elements already have the necessary info to render themselves, it
seems kind of redundant to convert to GDI GraphicsPaths and/or SVG.
But like I said, I am fairly new to the graphics programming side, so hopefully
I can count on the real world experience of those who have done it instead of
wasting my time trying to test the various implementation options.
Any more advice?
Thanks,
Gerald