ThinkGeo.com    |     Documentation    |     Premium Support

Override TextStyle.DrawCore DPI issues

I have run into a very interesting situation. My goal is to display a radius ring on the map and label the very top of the radius ring. 


I have created a class that inherits from TextStyle and overrides the DrawCore method. I have been able find the point that I want to center a text label. That point it the very top of the radius ring. I have been able to accurately convert that point from world cords to screen cords. 


I have a few options for drawing the text. The first: canvas.DrawTextWithWorldCoordinate. I like this one because I do not have to convert my point into screen cords. However there is no overload that will accept a HaloPen or Mask. That makes the text difficult to read. Please see the attached image. (This sample is the top left.) 


Another option for drawing the text. canvas.DrawText. This method has several overloads. It will accept a HaloPen and with a little bit of work I can convert my world cords into screen cords. This almost works for me. At 96 DPI it looks great. (Bottom Left Sample.) However when the DPI of the canvas changes the font does not scale correctly. (Top Right Sample.) I have tried to scale the font myself but when I do the text gets drawn in the wrong location. The higher the DPI the further UP the Y axis the text appears. (Bottom Right Sample.) 


Summary: I need some way to draw text, in the correct location, with HaloPens or Masks, on a canvas with standard and non-standard DPI settings.




Aaryn, 
  
 Thanks for pointing this out. We are working on recreating and fixing this issue. I will let you know if we have any result. 
  
 Thanks, 
 ThinkGeo Support 


Aaryn, 
  
 We have fixed this issue and please contact Support@thinkGeo.com if you want to get update.  
  
 Thanks, 
 ThinkGeo Support 


Thank you very much.

You are welcome, let us know anything else you run into. 
  
 ThinkGeo Support