[UMN_MAPSERVER-DEV] C# layerObj.draw && layerObj.drawLegend

Jean Michel PIERRET jmp at GEOSYS.COM
Mon Apr 23 04:37:51 EDT 2007


Hi,

 

1)

 

I guess you should either disable the labelcache for this layer
(layerObj.labelcache = mapscript.MS_OFF ) or call layerObj.drawlabelcache
explicitly right after drawing the shapes.



 

It’s ok for the label with (layerObj.labelcache = mapscript.MS_OFF),
drawlabelcache does not exist on layerObj but on mapObj.

 

lobj.labelcache = mapscript.MS_OFF;

lobj.draw(_lobj.map, iobj);

or

            lobj.draw(_lobj.map, iobj);

            lobj.map.drawlabelcache(iobj);

2)

Here is a function extracted from my previous project for drawing the legend
image, hopefully it applies to your intents fairly enough.

private Image CreateLegendImage(layerObj layer, int classindex, int width,
int height, int keysizex, int keysizey)
        {
            using (classObj def_class = new classObj(null)) // for drawing
legend images
            {
                using (imageObj image = def_class.createLegendIcon(map,
layer, width, height))
                {
                    classObj layerclass = layer.getClass(classindex);
                    layerclass.drawLegendIcon(layer.map, layer, keysizex,
keysizey, image, 
                        (width - keysizex) / 2, (height - keysizey) / 2);
                    byte[] img = image.getBytes();
                    using (MemoryStream ms = new MemoryStream(img)) 
                    {
                        return Image.FromStream(ms);
                    }
                }
            }
        }



Your function work but for one class only and without label, I’m looking for
a function which give me the same result of mapObj.drawLegend with only on
layer activate.

Thanks,

 

Regards.

 


 <mailto:jmp at geosys.com> Jean-michel PIERRET - Poste  376


Tel : +33 (0)5 62 47 80 76
Mail :  <mailto:jmp at geosys.com> jmp at geosys.com
GEOSYS SA

 

 

-----Message d'origine-----
De : UMN MapServer Developers List [mailto:MAPSERVER-DEV at LISTS.UMN.EDU] De
la part de Tamas Szekeres
Envoyé : vendredi 20 avril 2007 21:15
À : MAPSERVER-DEV at LISTS.UMN.EDU
Objet : Re: [UMN_MAPSERVER-DEV] C# layerObj.draw && layerObj.drawLegend

 

 

2007/4/20, Jean Michel PIERRET <jmp at geosys.com>:

Hi,

 

I'm using mapserver with c# bindings and i have two questions.

 

1)

                        layerObj lobj = null;

 

...

 

            imageObj iobj = null;

 

            iobj = lobj.map.prepareImage();

            lobj.draw(_lobj.map, iobj);

 

In the drawn image, the labels don't appear, whereas with the method
mapObj.draw they are there. It is normal ?.


I guess you should either disable the labelcache for this layer
(layerObj.labelcache = mapscript.MS_OFF ) or call layerObj.drawlabelcache
explicitly right after drawing the shapes.
 

 

2)

 

Exist there a method to draw legend for one layer only and not for all the
map. 


Here is a function extracted from my previous project for drawing the legend
image, hopefully it applies to your intents fairly enough.

private Image CreateLegendImage(layerObj layer, int classindex, int width,
int height, int keysizex, int keysizey)
        {
            using (classObj def_class = new classObj(null)) // for drawing
legend images
            {
                using (imageObj image = def_class.createLegendIcon(map,
layer, width, height))
                {
                    classObj layerclass = layer.getClass(classindex);
                    layerclass.drawLegendIcon(layer.map, layer, keysizex,
keysizey, image, 
                        (width - keysizex) / 2, (height - keysizey) / 2);
                    byte[] img = image.getBytes();
                    using (MemoryStream ms = new MemoryStream(img)) 
                    {
                        return Image.FromStream(ms);
                    }
                }
            }
        }
 


Best regards,

Tamas

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-dev/attachments/20070423/5c991aeb/attachment.html


More information about the mapserver-dev mailing list