ThinkGeo.com    |     Documentation    |     Premium Support

DrawTextWithWorldCoordinate

Hi,


I am trying to use DrawTextWithWorldCoordinate.GdiPlusGeoCanvas to create a preview of how text will appear when the user labels features on a layer. What I want to do is return an image that can be set as the Image property of a label. Obviously I want the text to be nicely displayd. The problem is that the text always seems to draw at some point to the left of where I would like it to be. Here is the line of code I am using:



      oCanvas.DrawTextWithWorldCoordinate("Sample Text",
                                           oFont,
                                           oBrush,
                                           0,
                                           oSize.Height - 20,
                                           DrawingLevel.LabelLevel)

Where oSize.Height is the height of the label I am using to display the image. From the screenshot you can see that the text does not display properly.



I have anticipated your request for a sample project and have attached it. I am using the full version of MSD, 5.0.0.0. Please tell me what I am doing wrong.


Thanks!


Steve



DrawTextWithGeoCanvas.zip (49.1 KB)

Dear Steven, 
  
 I’m really appreciate for your sample. I can recreate that problem and looks like there is something wrong in the location calculate functions, I have reported to product team, and please subscribe this post to get the news, 
  
 Regards, 
  
 Gary

Dear Steven, 
  
 The problem is caused because the DrawTextWithWorldCoordinate method didn’t describe very clearly, in our location calculate logic, we got this : 
 ScreenPointF pointForLabel = new ScreenPointF((float)(point.X - width * 0.5), (float)(point.Y - height * 0.5)) to avoid something. 
  
 So could you please try to use : oCanvas.MeasureText(“Sample Text”, oFont).Width * 0.5 to instead 0. 
  
 We will fix this problem later. 
  
 Any more questions please feel free to let me know. 
  
 Regards, 
  
 Gary