AO局部刷新

AO中的對高亮顯示的局部刷新及對局部刷新方法的總結 收藏
 
剛開始使用AO進行GIS程序設計的時候,只要遇到需要刷新ActiveView的地方,就會毫不猶豫的使用IActiveView的Refresh()方法,直到後來才知道Refresh()是整體刷新方法,而且刷新效果確實不好,整個MapControl都閃的厲害,尤其在地圖文件很大的情況,其惡劣視覺衝擊越明顯。於是嘗試着在某些地方使用IActiveView的PartialRefresh()即局部刷新方法,例如對選擇集的刷新,對Element的刷新等,隨着這一局部刷新方法的使用,刷新效果果然大有改觀,MapControl能“平靜”的做出activeview的改變,不再有用Refresh()時,那種強烈的晃動感了。
今天在這裏說一下我對高亮顯示選擇集的局部刷新的認識過程。
第一階段:每次用IFeatureSelection的SelectFeatures()選擇後,一律用Refresh(),效果極差。
第二階段:在每次選擇後,緊跟其後,使用esriViewGeoSelection()進行局部刷新,效果明顯改善,但之後出現一個問題,即當空選的時候,即使刷新,高亮顯示的仍然是上次查詢的結果。
第三階段:爲了修正第二階段的問題,在空選的時候,獲得ISelectionSet的count屬性,若count爲0,則手動調用IMap的ClearSelection()方法對上次的選擇集進行清除。但是使用局部刷新方法失靈,必須改用全局刷新Refresh()。
第四階段,在AO開發幫助裏注意到,對選擇集的局部刷新,在選擇前和選擇後必須各刷新一次(When selecting features, you must call PartialRefresh twice, once before and once after the selection operation.),按照幫助內的方法局部刷新後,即使選擇集爲空,也能保證刷新掉上次的高亮選擇集,而不需要使用IMap的Clear()方法或者IFeatureSelection的Clear()方法進行手動刷新。
Eg
…..
     this.pGeometry = this.MainMap.TrackCircle();//產生用於查詢的圖形
                   this.MainMap.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection,null,null);//選擇前的局部刷新
     this.pFeatureCursor = this.ShopOperation.FilterByGeometry(this.pGeometry);//調用自定義的圖層操作對象的空間查詢方法            this.MainMap.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection,null,null); //選擇後的局部刷新
….
 
esriViewBackground   Map grids  Page/snap grid
esriViewGeography  Layers Unused
*esriViewGeoSelection  Feature selection Unused
esriViewGraphics   Labels/graphics Graphics
esriViewGraphicSelection  Graphic selection Element selection
esriViewForeground   Unused Snap guides

 
刷新地圖需要注意的幾個問題:
1. 放大、縮小、全圖等操作後的刷新,必須使用Refresh(),假如使用某種局部刷新的話,比如使用esriViewGeography進行局部刷新,當地圖上有高亮選擇集的時候,該選擇集就得不到刷新,高亮的位置與feature實際的位置發生偏移。所以縮放等操作的刷新,應該用全局刷新Refresh()。
2. 常用的局部刷新是用esriViewGeoSelection對選擇集的刷新,esriViewGraphics 對Label、Element等的刷新
3. 可以將兩種或兩種以上的局部刷新結合使用,方法爲:pActiveView.PartialRefresh(esriViewDrawPhase. esriViewGeoSelection + esriViewDrawPhase.. esriViewGraphics,null,null);


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/suinon/archive/2008/06/20/2569072.aspx

發佈了112 篇原創文章 · 獲贊 10 · 訪問量 47萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章