Arcengine 绘制Element、Symbol 在控件上

做符号预览的时候需要将ISymbol或IElement绘制到指定的控件上,下面边码边说,一起讨论讨论:
一、ISymbol:
        ISymbol接口有Draw函数,查询其接口可以发现,我们需要执行ISymbol.SetupDC -> ISymbol.Draw -> ISymbol.ResetDC 这三个步骤;
        首先SetupDC需要参数 hDC和IDisplayTransformation;贴代码:
        例如:绘制在Panel上:
       ————————————————————————————————————————————————————————————————-
       int width=Panel.Width;

       int heigth=Panel.Heigth;

      //绘制方法

       Graphics graph=Graphics.FromHwnd(Panel.Handle);

       graph.Clear(Panel.BackColor);

      //分辨率

       double dpi=graph.DpiX;
       IEnvelope pEnve=new EnvelopeClass();
       pEnve.PutCoords(0,0,width,heigth);

       Ipoint pCenterPt=new PointClass;

       pCenter.PutCoords(width/2,height/2);

        
       tagRECT myRect=new tagRECT();

       设置MyRect 的 top=0;bottom=heigh; left=0,right=width;

       

       IDisplayransformation pDisTrans=new  DisplayTrabsformation();

       pDisTrans.VisiableBounds=pEnve;

       pDisTrans.Bounds=pEnv;

       pDisTrans.Set_DeviceFrame(ref myRect);

       pDisTrans.Resolution=dpi;

       intPtr hdc=graph.GetHdc();

      ISymbol.SetupDC(hec.ToInt32,pDisTrans);

      ISymbol.Draw(pCenterPt);

      ISymbol.ResetDC();

      //绘制完成后 是否绘图对象 

      graph.ReleaseHdc(hdc);

      graph.Dispose();

二、Symbol的第二种方法

     IStyleGalleryItem item=new ServerStyleGalleryItemClass();

     item.Item=youSymbol;//你需要预览的ISymbol

     stdole.IPictureDisp pic=axSymbologyControl1.GetStyleClass(esriSymbologyStyleClass).PriviewItem(item,100,100);

     Image img=Image.FormHbitmap(new IntPtr(pic.Handle));

     picPriview.Image=img;

//_____________________________________________________________________________________________________

   绘制Element 在Panel控件上

   其中 graph、pCenterPoint、pDisTrans 的设置方式和上面一样

   以绘制线段为例:

   IDisplay pDisplay=new SimpleDisplay();

   pDisplay.StartDrawing(graph.GetHdc(),ToInt32(),(short)esriScreeCache.esriNoScreeCache);

   pDisplay.DisplayTransformation=pDisTrans;

   pDisplay.SetSymbol(LineSymbol);//设置绘制线段的符号

   pDisplay.DrawPolyline(IGeometry) ;//设置绘制线段的几何数据

//在arcgis帮助中找吧

    

      

 

转载自:https://blog.csdn.net/wangtao510/article/details/48675681

You may also like...