ThinkGeo.com    |     Documentation    |     Premium Support

WPF vs Desktop edition performance

Hello


 


I was trying a project containing a simple shape file, in both WPF and Desktop edition, but i am surprized that the performance of the Desktop edition is much better than that of the WPF, because the shape file is very lite, and i suppose that the wpf is build on multithreaded core, because the map rendering is being displayed as a separated frames.


Can this problem be solved on the wpf edition? because my project is all on wpf, and i tried to use the desktop edition in a winformshost but there is another problem which is that the winformshost is displaying the map on the top always and no windowless controls can be displayed above it.


And is the multithreading option is by default on on the wpf edition? but i am not sure that this is the problem, the problem is in the rendering of the map ( separated frames)


Another problem is occuring, which is when i am setting the flowdirection of the wpf window to "RightToLeft", the map is rendering incorrectly (like an inordered frames) !!!


Thanks


 



 XTeam,



I’ve tried to recreate your issue by creating two applications, one is with DesktopEdition and the other is with WPFDesktopEdition, and both of them are just loading and displaying a simple shapefile “Countries02.shp”. I can’t find the performance issue you mentioned in WPF application comparing with the DesktopEidion one. So besides just simple loading, do you include some other functions in your app? Are you using the WPF Desktop Edition or the WPF Control in the Desktop Edition? Could you send us a sample along with the shapefile to reproduce the issue if possible? That will be very helpful to locate the issue.


Multithreading option is by default turned on? You can turn it off by simply setting the LayerOverlay.TileType property to SingleTile.


About the 3rd issue (incorrectly rendering when the wpf window is set to “RightToLeft”), so what you want is a mirror reflection of the original map, like following? 


 


If yes, just simply add the following code to your xaml will be fine. 


 <uc1:WpfMap x:Name="Map1" Loaded="WpfMap_Loaded" RenderTransformOrigin="0.5 0.5">


            <uc1:WpfMap.RenderTransform>


                <ScaleTransform ScaleX="-1" />


            </uc1:WpfMap.RenderTransform>


       </uc1:WpfMap>



If not, please let us know your requirement more specifically, we might be able to find a workaround for you.


Thanks.


Ben



Thanks for the reply,


I uploaded my sample to show to you the difference, i am using the wpf map from the wpfdesktopedition, and the difference is on rendering (zooming and panning, and refreshing the map): there is a simple delay time when rendering the map, while on the desktopedition there is no delay !!


cid-69f4cc95d5cc10a8.office.live.com/self.aspx/.Public/WpfApplication1.zip


I tried to use the SingleTile, and it is better, but still existing a delay, and the RightToLeft mode is still rendering incorrectly. 


To see this subject, please try to set the flowdirection of the mainwindow to righttoleft and then try to zoom in on the map, and you will see the difference: there is a fault rendering for map tiles on multipletile mode, and an incorrect x position on the singletile mode !!


note: the RightToLeft mode doesn't need to make any change on the map, it needs only to set the position of the Navigation Pane to the right, and maybe the change to position of the adnorment layer.


Thanks


 



Hello Ben,


I tried the WPF Map in the DesktopEdition , its performance is the same of the WinForms Map, which is much better in rendering when zooming and mapping, but is there any problem with setting the map size ?? I couldnot set the widht and the height to "Auto" !!


And i want to ask if there is ANY limitations on this control ??


 


Waiting your reply, Thanks.



Hi XTeam, 
  
 About the delay time: 
 It’s actually an animation effect we use in WPF Desktop Edition. This animation effect may seem to be a little pointless when the map is rendering small shapefiles, like in you sample.  
 But when the map is rendering some large shapefiles, the animation effect prevents the users from seeing a blank map when panning or zooming in/out. 
 You can see what I mean by simply modifying the two windows in your sample to load some larger files. I tried a shape file that is about 100MB, the winform window stops responding when zooming in/out while the wpf window keeps being responsive all the time. 
  
 And about the right to left mode: 
 If what you want is only to move the navigation bar to the right, then you don’t need to use the FlowDirection property. You can accomplish that by writing a statement like this: 
 Map1.MapTools.PanZoomBar.HorizontalAlignment = HorizontalAlignment.Right; 
 I don’t really understand what you mean by “the change to position of the adornment layer”, would you please explain that? 
  
 Please feel free to let us know if you have any further questions. 
  
 Regards, 
 Tsui

Additional remarks: 
  
 If you want to get rid of the animation effect, here is a code sample that might be of help: 
 public class MyMap : WpfMap 
     { 
         public override void OnApplyTemplate() 
         { 
             base.OnApplyTemplate(); 
             ((Storyboard)OverlayCanvas.Resources["ZoomStoryboard"]).Duration = TimeSpan.FromMilliseconds(1); 
         } 
     } 
 You can use this subclass of WpfMap in your program; it behaves like there is no animation at all. 
  
 Please let us know if this works for your scenario. 
  
 Regards, 
 Tsui 


OK, Thank you very much for the explanation 
  
 This was a great solution for the WPFMap (overriding the template). it was very helpful. 
 About the RightToLeft direction, what i means is that you must not change anything on the map when it is set to RightToLeft except the AdnormentLayers like the Logo, Navigation, and any other AdnormentLayer. I means that there is a bug on drawing the Map that you must solve !! especially when the TileType is set to MultiTile. 
  
 And i want to reask about the WPFMap in the DekstopEdition: Is there any limitations? and what about the Width and Height (could not be set to ‘Auto’) 
  
 Regards.

Xteam,


About WpfMap resizng issue, please look at this thread for detail


gis.thinkgeo.com/Support/Dis...fault.aspx


Thanks,


James



Thanks.

You’re welcome

 Hi XTeam,


 


When the TileType is set to MultipleTile, the map renders itself in parts. It’s like this:




                                                  


The bitmaps are laid out in a Canvas.


Now if we set the FlowDirection to RightToLeft, the Canvas will rearrange its contents and it’ll be like this:




   


It just flips the contents around, that’s just how the WPF Layout system works.


This is more of an expected behavior rather than a bug.


 


If what you want is just to move the map tools like the logo and navigation panel to the right, then you don’t really need to use FlowDirection. You can accomplish that by using statements like this:


Map.Tools.XXX.HorizontalAlignment = HorizontalAlignment.Right;


The XXX means the map tool you want to move, it could be Logo or PanZoomBar or something else.


 


Please let us know if you have any other questions.


 


Regards,


Tsui



Thanks Tsui 
  
 When i posted to you about the RightToLeft behavior, i wanted to tell you to correct this bug only, and i already used the HorizontalAlignment for the MapTools.XX layers. and my goal is that you will correct this issue only !! 
  
 Thank you very much for your interest, and let us go for the best of programming. 


Hi XTeam, 
  
 You are welcome.  
 Please let us know if you encounter any problem when using Map Suite products, we’ll do our best to help. 
  
 Regards, 
 Tsui