ThinkGeo.com    |     Documentation    |     Premium Support

Thinkgeo 7.0 To 8.0

Dear Sir/Madam



I have a problem about of new version of Thinkgeo Desktop Edition  8.0.I am developing our project on Thinkgeo Desktop Edition  7.0 .

I have changed our Thinkgeo Desktop Edition 8.0 after this process changed the font & map graphic  of map canvas so please give me a solution.



Thanks 

Harish Upadhyay 

Hi Harish, 
  
 We are glad to help you about that. 
  
 Do you meant after upgrade from 7.0 to 8.0, your map looks with different shape and font, but you haven’t change any code? 
  
 If possible, could you please give me some screen shots for this change and some related code. 
  
 Regards, 
  
 Don

Dear Sir,

Find the attachment.



Regards



Harish Upadhyay

002_Map.Jpg (30.6 KB)
001_Map2.Jpg (28 KB)

Hi Harish, 
  
 That’s really strange, the area border looks like duplicate so the color is deeper, but the font color looks like is covered by many same layers. 
  
 I think we need your code for test that, because I did a quickly test in HowDoISample, just replace the dlls, everything looks well. 
  
 So I think I need your data and code to reproduce that first. If you don’t want to upload your project in this public forum, please sent an email to forumsupport@thinkgeo.com, the subject should contains the text “post 12229” and ask him cc to me, please don’t forget attach your project and a simple test data, don’t need zip our dlls, just let me know your detail test version number. 
  
 Regards, 
  
 Don

Dear Sir,



Please give me  sample of Text Style as ( City1, City2, LocalRoad1, LocalRoad2) with DLL of Thinkgeo Desktop Edition 8.0.



Thanks 



Harish Upadhyay


Hi Harish, 
  
 As below is the code for generate the text style you need: 
  
  
string TextColumn = “Your Text Column Name here”;

            TextStyles.CreateSimpleTextStyle(TextColumn, “Arial”, 7, DrawingFontStyles.Regular, GeoColor.StandardColors.Black, 0, -3); // City1
            //TextStyles.City1(TextColumn);
            TextStyles.CreateSimpleTextStyle(TextColumn, “Arial”, 10, DrawingFontStyles.Regular, GeoColor.StandardColors.Black, 0, -6); // City2
            TextStyles.CreateSimpleTextStyle(TextColumn, “Arial”, 9, DrawingFontStyles.Regular, GeoColor.StandardColors.Black, 0, 0); // LocalRoad1
            TextStyles.CreateSimpleTextStyle(TextColumn, “Arial”, 9, DrawingFontStyles.Regular, GeoColor.StandardColors.Black, 0, 9); // LocalRoad2
 
  
 Our dll is too big, so we won’t upload that to forum, please get that from daily build dll package. 
  
 Regards, 
  
 Don

Dear Sir,



Change the Font style  of 7.0 and Font style  of 8.0 . Please Make a sample of Font Style (7.0 And 8.0)   give me screen short of the sample.



Thanks



Harish Upadhyay

Hi Harish,



Please see my screen shot as below.



It looks the font style is the same under 7.0 and 8.0.



Regards,



Don







Dear Sir,



I am apply same code both version but not give me output properly. Please give me a solution.



Thanks 



Harish Upadhyay

Hi Harish, 
  
 I think if you use same code but get different result that’s because there are some problem for your environment. 
  
 Could you please find another clean machine(or Virtual Machine) to prove that first? 
  
 Or you can uninstall all of our product then reinstall 8.0 again, maybe some dll haven’t been updated, so please install your product from our new product center. 
  
 Regards, 
  
 Don

I can also see this effect, previously the HaloPen wasn’t showing or didn’t exist. Since my move to version 8 today (from version 6), it is.



I have tried:

- setting it to transparent, which doesn’t work (alpha values seem to have no effect on text styles)

- matching the background colour; which works well until you have a coloured shape under the text or a map or anything that isn’t the background colour

- setting the haloPen to null!



I just want to switch it off. I’m using version 8.0.0.112.



I’ve added a screen snip of:



var ts = TextStyles.CreateSimpleTextStyle(<columnname>, “Arial”, 8, DrawingFontStyles.Regular, new GeoColor(200, 200, 200, 50) ); 

// ts.HaloPen = new GeoPen(new GeoColor(bgColour.A, bgColour.R, bgColour.G, bgColour.B));

ts.HaloPen = null;

ts.XOffsetInPixel = 4;





</columnname>

024_Capture.PNG (1.14 KB)

Hi Neil,



Thanks for your information!



But sorry your attach image is too small that very hard to see it very clear, seems like it’s text with the halopen, right?



I tried the style your provide, and tried set/remove halo pen, it’s both working fine, sorry I didn’t know your halopen color so I just use red.please see the image below:

with red halo pen.



without halopen



Could you please provide a self-contained sample to us to help reproduce your problem?



Regards,



Gary


Hi, 



I do not get the results you show above. 



Can you provide a code sample to remove the HaloPen, setting it to null has no effect and a watch on the pen after this action has a transparent black halopen, which is the default. As stated above, unless there’s a mode you need to put the map in for transparency to work, it appears as black.  



The point of the image is that it’s supposed to look like your 2nd image, but doesn’t. and is almost impossible to read. Again, that’s the point. 





The code to generate the text style is pretty much as you see above, it’s applied in many places though, but below is the exact code for the 2 versions used. These currently use the map’s background colour as the halo colour, currently the best “worst case”. 

 

 private TextStyle GetTextStyle(String columnName)


 {


     Color bgColour = Tools[“BackGround Colour”].SelectedColor;


     Color colour = Tools[“Font Colour”].SelectedColor;

     var size = Tools[“Font Size”].Value;

     var brush = new GeoSolidBrush(new GeoColor(colour.A, colour.R, colour.G, colour.B));

     var textStyle = new TextStyle(columnName, new GeoFont(“Arial”, size), brush);



     textStyle.HaloPen = new GeoPen(new GeoSolidBrush(new GeoColor(bgColour.A, bgColour.R, bgColour.G, bgColour.B)));

     textStyle.XOffsetInPixel = 4;
return textStyle;

 }



 private TextStyle GetTextStyle(GeoColor colour, String columnName, Int32 textSize)

 {

     var bgColour = Tools[“BackGround Colour”])).SelectedColor;

     var brush = new GeoSolidBrush(colour);

     var textStyle = new TextStyle(columnName, new GeoFont(“Arial”, textSize), brush);



     textStyle.HaloPen = new GeoPen(new GeoSolidBrush(new GeoColor(bgColour.A, bgColour.R, bgColour.G, bgColour.B)));

     textStyle.XOffsetInPixel = 4;

     return textStyle;

 }
 



And it’s used to add a marker and label as below: 





                var layer = new InMemoryFeatureLayer();
                var layerLabels = new InMemoryFeatureLayer();

                var stream = new MemoryStream();
                Properties.Resources.Red1_016x016_32.Save(stream, ImageFormat.Png);
                layer.Name = LAYER_LOCATION;
                layer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle.PointType = PointType.Bitmap;
                layer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle.Image = new GeoImage(stream);
                layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level18;

                layer.Open();
                layer.Columns.Add(new FeatureSourceColumn(Shapefile.COLUMNNAME_ID));
                layer.Columns.Add(new FeatureSourceColumn(Shapefile.COLUMNNAME_NAME));
                layer.Close();

                var textStyle = GetTextStyle(new GeoColor(200, 200, 200, 50), Shapefile.COLUMNNAME_NAME, 8);
                textStyle.XOffsetInPixel = Convert.ToInt32(Properties.Resources.Red1_016x016_32.Width / 2);
                layerLabels.Name = LAYER_LOCATION_LABEL;
                layerLabels.ZoomLevelSet.ZoomLevel04.CustomStyles.Add(textStyle);
                layerLabels.ZoomLevelSet.ZoomLevel04.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level18;

                layerLabels.Open();
                layerLabels.Columns.Add(new FeatureSourceColumn(Shapefile.COLUMNNAME_ID));
                layerLabels.Columns.Add(new FeatureSourceColumn(Shapefile.COLUMNNAME_NAME));
                layerLabels.Close();

                // cycle through each location adding location markers
                foreach (var rowLocation in Model.LocationData.Location)
                {
                    var feature = new Feature(new PointShape(rowLocation.Longitude, rowLocation.Latitude));
                    feature.ColumnValues[Shapefile.COLUMNNAME_ID] = rowLocation.LocationId.ToString();
                    feature.ColumnValues[Shapefile.COLUMNNAME_NAME] = rowLocation.LocationName;
                    layer.InternalFeatures.Add(rowLocation.LocationName, feature);
                    layerLabels.InternalFeatures.Add(rowLocation.LocationName, feature);
                }

                // build indexes
                layer.BuildIndex();
                layerLabels.BuildIndex();

                var layerOverlay = new EnspecLocationLayerOverlay();
                layerOverlay.Name = OVERLAY_LOCATIONS;
                layerOverlay.Layers.Add(LAYER_LOCATION, layer);
                layerOverlay.Layers.Add(LAYER_LOCATION_LABEL, layerLabels);

                map1.Overlays.Add(layerOverlay);
                map1.Refresh();

 
 



The only non-default (or weren’t at the time) map settings are: 


map1.ThreadingMode = MapThreadingMode.SingleThreaded;

 map1.DrawingQuality = DrawingQuality.HighQuality;

 map1.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default;
 



My main requirement is to remove the halo, as regardless of what colour I settle on, when it’s overlayed on a map (ECW large area map for example) it looks terrible.



I’ve attached a screenshot (with a bit of editing as it shows client specific data in the labels)  but you get the idea. As I was doing it I had a thought; the area shapes are 10% transparent, so when they overlay each other they get darker to show density (simple but effective). So we are using transparency in the sample at the moment, however this does not work for text, and specifically halos.



I hope this is enough for you, as before I’m using a daily build from a few days ago, 112.

Hi Neil,



Thanks for your further information, I use the code your provide above to create the drawstyle, and I can set the halopen to draw halopen , I can set halopen to null to hide it or set nothing because the halopen won’t draw default.



Please see the attachment, you can replace it in how do I samples–>labeling to run, if it’s working, maybe some place in your project override the halopen or set to focus draw it?



If it’s not working in your side ,could you please get the latest version from productcenter and have another try?



Regards,



Gary

DrawAndLabelANiceLookingRoad.zip (1.48 KB)

Hi Gary,



I tried your sample and all seems good, the only real difference between it and my code is the method of creating the style:



var ts = new TextStyle(columnName, new GeoFont(“Arial”, size), colour);

vs

var ts = TextStyles.CreateSimpleTextStyle(columnName, “Arial”, size, DrawingFontStyles.Regular, colour);



After running both these lines I get effectively the same result, Halo pen being 0,255,255,255, so transparent…but transparent white??. Yet on my application I get a black border but on the sample app I get what I want. This is with the same version of the control running on both.



I’m missing something, but I can’t see what it is.

Hi Neil, 
  
 Sorry that we are unable to reproduce the issue with the latest version by using the code you provided, everything works fine, can you update a click-once demo to us for test? 
  
 Thanks, 
 Johnny