ThinkGeo.com    |     Documentation    |     Premium Support

Labels show through LegendPrinterLayer

Hi guys,



We are having a problem when printing maps using the PrinterLayers. We are using MS 9.0.0.142.



If we print a page layout using map layers with labels, the labels show through the background mask of the legend, even though the background mask is solid, not transparent. We also see this happening when we create LabelPrinterLayers. Since BackgroundMask is a property of the base class it would not surprise me if all PrinterLayers have this behavior.



I have, of course, attached a sample project.



Thanks!



Steve

004_003_002_001_LegendSizeTest.zip (93.2 KB)

Hi Steven,



I’m not sure whether we understood you correctly, but when we tested the sample you attached with MS 9.0.0.142, we were unable to recreate the problem, we did set the BackgroundMask as a SolidBrush, but the background of legend is not transparent, just as expected.



Thanks,
Johnny

Thanks for your response.  



I want to make sure you understood that the problem only happens if you print the map. On the screen it looks fine. I have attached a pdf of what it looks like.



Thanks! 



Steve




layout.pdf (122 KB)

Hi Steven, 
  
 Thanks to let us know that, I have reproduced that, but we need some time to see where is the problem and how to solve it. 
  
 Any update I will let you know. 
  
 Regards, 
  
 Don

Greetings Steve, 



Sorry for the long delay, your problem could be solved by adding some codes in frmLegendProps.vb: 



Add  

  Legend.BackgroundMask.DrawingLevel = DrawingLevel.LabelLevel 

right after the BackgroundMask is created. 



and add  

  oLegendItem.TextStyle.DrawingLevel = DrawingLevel.LabelLevel 

  CType(oLegendItem.ImageStyle, AreaStyle).DrawingLevel = DrawingLevel.LabelLevel 


in the foreach block from line 78. 



This is because the labels in MapPrinterLayer always have the highest drawing level when printing, so it could be on top of the LegendPrinterLayer, but the reason that this problem did not happen "on the screen" because the MapPrinterLayer is drawn as raster image at that time. So the best solution is to upgrade the drawing level of LegendPrinterLayer, hope it helps. 





Thanks, 

Edgar

Edgar & everyone, 
  
 Thanks for your reply! That fixed it! 
  
 Steve

Hi Steve, 
  
 We are glad to hear that fixed. 
  
 Regards, 
  
 Don