예제 #1
0
        public static void SaveToIpe(List <IFeatureLayer> pFLayerLt, IEnvelope pFLayerEnv, CEnvelope pIpeEnv,
                                     bool blnGroup, string strBoundWidth, CParameterInitialize ParameterInitialize, bool blnLayerToLeft = true)
        {
            var strContent = GetScaleLegend(pFLayerEnv, pIpeEnv, CHelpFunc.GetUnits(ParameterInitialize.m_mapControl.MapUnits));

            for (int i = 0; i < pFLayerLt.Count; i++)
            {
                var pFLayer         = pFLayerLt[i] as IFeatureLayer;
                var strDataOfFLayer = CToIpe.GetDataOfFeatureLayer(pFLayer, pFLayerEnv, pIpeEnv, strBoundWidth, true);

                if (blnGroup == true)
                {
                    strDataOfFLayer = "<group>\n" + strDataOfFLayer + "</group>\n";
                }
                strContent += strDataOfFLayer;

                if (blnLayerToLeft == true)
                {
                    pIpeEnv.XMin -= pIpeEnv.Width;
                    pIpeEnv.XMax -= pIpeEnv.Width;
                }
            }

            string strFullName = ParameterInitialize.strSavePath + "\\" + CHelpFunc.GetTimeStamp() + ".ipe";

            using (var writer = new System.IO.StreamWriter(strFullName, true))
            {
                writer.Write(CIpeDraw.GenerateIpeXMLWithContent(strContent));
            }

            System.Diagnostics.Process.Start(@strFullName);
        }
예제 #2
0
        public static void SaveToIpe(List <IFeatureLayer> pFLayerLt, IEnvelope pFLayerEnv, CEnvelope pIpeEnv,
                                     bool blnGroup, string strBoundWidth, CParameterInitialize ParameterInitialize, bool blnLayerToLeft = true)
        {
            //save path
            //CHelpFunc.SetSavePath(ParameterInitialize);

            //        double dblFactorIpeToLayer = pIpeEnv.Height / pFLayerEnv.Height;
            //        double dblLegend16 = 16 / dblFactorIpeToLayer;
            //        int intLegendInt = CMath.GetNumberTidy(dblLegend16);
            //        double dblLegentInt = intLegendInt * dblFactorIpeToLayer;


            //        //add legend (unit and a sample line), draw a line with length 32 in ipe
            //        string strData = CIpeDraw.writeIpeText(dblLegend16 + " " + ParameterInitialize.m_mapControl.MapUnits.ToString(), 320, 80) +
            //            CIpeDraw.drawIpeEdge(320, 64, 336, 64);

            //        strData += CIpeDraw.writeIpeText(intLegendInt + " " + ParameterInitialize.m_mapControl.MapUnits.ToString(), 320, 32) +
            //CIpeDraw.drawIpeEdge(320, 16, 320 + dblLegentInt, 16) +
            //CIpeDraw.drawIpeEdge(320, 16, 320, 20) + CIpeDraw.drawIpeEdge(320 + dblLegentInt, 16, 320 + dblLegentInt, 20);
            var strData = GetScaleLegend(pFLayerEnv, pIpeEnv, CHelpFunc.GetUnits(ParameterInitialize.m_mapControl.MapUnits));


            //var tt = ParameterInitialize.m_mapControl.
            for (int i = 0; i < pFLayerLt.Count; i++)
            {
                var pFLayer = pFLayerLt[i] as IFeatureLayer;

                if (blnGroup == true)
                {
                    strData += "<group>\n";
                }

                strData += CToIpe.GetDataOfFeatureLayer(pFLayer, pFLayerEnv, pIpeEnv, strBoundWidth, true);

                if (blnGroup == true)
                {
                    strData += "</group>\n";
                }

                if (blnLayerToLeft == true)
                {
                    pIpeEnv.XMin -= pIpeEnv.Width;
                    pIpeEnv.XMax -= pIpeEnv.Width;
                }
            }

            string strFullName = ParameterInitialize.strSavePath + "\\" + CHelpFunc.GetTimeStamp() + ".ipe";

            using (var writer = new System.IO.StreamWriter(strFullName, true))
            {
                writer.Write(CIpeDraw.GenerateIpeContentByData(strData));
            }

            System.Diagnostics.Process.Start(@strFullName);
        }