วิธีที่ดีที่สุดในการรีเฟรชมุมมองหลังจากวาดกราฟิกคืออะไร
ฉันวาดรูปหลายเหลี่ยมบนปุ่มเพื่อไฮไลต์สถานที่ จากนั้นฉันต้องรีเฟรช ActiveView เพื่อแสดงรูปหลายเหลี่ยมใหม่ บรรทัดนี้ใช้งานได้: mapControl.ActiveView.ScreenDisplay.StartDrawing(StartDrawing(mapControl.ActiveView.ScreenDisplay.hDC, (System.Int16)ESRI.ArcGIS.Display.esriScreenCache.esriNoScreenCache); mapControl.ActiveView.ScreenDisplay.DrawPolygon(feature.Shape); mapControl.ActiveView.ScreenDisplay.FinishDrawing(); mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewAll, feature.Extent, null); แต่มันจะโหลดซ้ำทุกชั้น ฉันพยายามโทรหาPartialRefreshคนอื่นเกือบทุกวิธีesriViewDrawPhaseแต่ไม่มีรูปหลายเหลี่ยมแสดงรูปใหม่ มีวิธีแก้ปัญหาที่ดีกว่าการวาดใหม่esriViewDrawPhase.esriViewAllหรือไม่? ปรับปรุง ฉันใช้ILayerExtensionDraw.AfterDrawเพื่อทดสอบเฟสการวาดและ AfterDraw จะถูกโจมตีPartialRefresh()ด้วยesriViewAllเท่านั้น ส่วนขยายถูกเพิ่มในเลเยอร์ทั้งหมดใน MapControl.Layers ฉันคาดว่าจะได้รับผลกระทบทุกครั้งหรือไม่ เลเยอร์ใดที่mapControl.ActiveView.ScreenDisplay.DrawPolygon(feature.Shape);วาดเพื่อไม่ให้ AfterDraw ยกขึ้น? ตอบ ขอขอบคุณ Kirk ที่นี่เป็นวิธีแก้ปัญหาซึ่งแสดงกราฟิคที่เพิ่มใหม่โดยไม่ต้องโหลดซ้ำเลเยอร์ใด ๆ IGraphicsContainer con = _mapControl.Map as IGraphicsContainer; if (con != null) { IFillShapeElement fillShapeElement = new PolygonElementClass(); fillShapeElement.Symbol = fillSymbol; IElement …