//添加GLISTBOX项 private void addListBoxItem(ISymbol symbol) { IStyleGallery styleGallery; IStyleGalleryItem styleGalleryItem; IStyleGalleryStorage styleGalleryStorge; styleGalleryItem = new ServerStyleGalleryItemClass(); styleGalleryItem.Name = this.txtSymbolName.Text; styleGalleryItem.Category = "default"; object objSymbol = symbol; styleGalleryItem.Item = objSymbol; styleGallery = new ServerStyleGalleryClass(); styleGalleryStorge = styleGallery as IStyleGalleryStorage; styleGalleryStorge.TargetFile = fileName; //IStyleGalleryClass styleGalleryClass = styleGallery.get_Class(CurrentStyleGalleryClassIndex); ISymbologyStyleClass pSymbolClass = psymbologyStyleClass; pSymbolClass.AddItem(styleGalleryItem, 0); pSymbolClass.SelectItem(0); stdole.IPictureDisp pPicture = pSymbolClass.PreviewItem(styleGalleryItem, 140, 20); Image image = Image.FromHbitmap(new System.IntPtr(pPicture.Handle)); GridPanel panel = supergrid.PrimaryGrid; GridRow row = new GridRow(image); panel.Rows.Add(row); psymbologyStyleClass.RemoveItem(0); imagelist.Add(image); }
//added by chulili //函数功能:获取符号库中的符号 //输入参数:符号库全路径 符号类别 符号名 //输出参数:符号 //代码来源:借鉴同事代码 private static ISymbol GetSymbol(string stylefileFullname, string styleClassName, string sSymbolName) { ISymbol pSymbol = null; IStyleGallery pStyleGallery = new ServerStyleGalleryClass(); IStyleGalleryStorage pStyleGalleryStorage; IEnumStyleGalleryItem pEnumStyleGalleryItem = new EnumServerStyleGalleryItemClass(); pStyleGalleryStorage = pStyleGallery as IStyleGalleryStorage; pStyleGalleryStorage.AddFile(stylefileFullname); pEnumStyleGalleryItem = pStyleGallery.get_Items(styleClassName, stylefileFullname, ""); pEnumStyleGalleryItem.Reset(); IStyleGalleryItem pEnumItem; pEnumItem = pEnumStyleGalleryItem.Next(); while (pEnumItem != null) { if (pEnumItem.Name == sSymbolName) { pSymbol = pEnumItem.Item as ISymbol; break; } pEnumItem = pEnumStyleGalleryItem.Next(); } System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumStyleGalleryItem); return(pSymbol); }
/// <summary> /// 获得符号 /// </summary> /// <params name="sServerStylePath"></params> /// <params name="sGalleryClassName"></params> /// <params name="symbolName"></params> /// <returns></returns> public static ILineSymbol GetSymbol(string sServerStylePath, string sGalleryClassName, string symbolName) { IStyleGallery pStyleGallery = new ServerStyleGalleryClass(); var pStyleGalleryStorage = (IStyleGalleryStorage)pStyleGallery; ILineSymbol lineSymbol = new SimpleLineSymbolClass(); //查找到符号 pStyleGalleryStorage.TargetFile = sServerStylePath; //输入符号的地址 var pEnumStyleGalleryItem = pStyleGallery.Items["Line Symbols", sServerStylePath, sGalleryClassName]; //sGalleryClassName为输入符号库的名称 pEnumStyleGalleryItem.Reset(); var pStyleGalleryItem = pEnumStyleGalleryItem.Next(); while (pStyleGalleryItem != null) { if (pStyleGalleryItem.Name == symbolName) { lineSymbol = (ILineSymbol)pStyleGalleryItem.Item; Marshal.ReleaseComObject(pEnumStyleGalleryItem); break; } pStyleGalleryItem = pEnumStyleGalleryItem.Next(); } //定义符号的大小,已经定义好了是size=30 //lineSymbol.Width = 2; return(lineSymbol); }
// 从符号 public static ISymbol FetchSymbol(string name) { string strStartPath = System.Windows.Forms.Application.StartupPath; IStyleGallery pStyleGallery = new ServerStyleGalleryClass(); IStyleGalleryStorage pStyleGalleryStorage = pStyleGallery as IStyleGalleryStorage; pStyleGalleryStorage.AddFile(strStartPath + "\\mlb.ServerStyle"); IEnumStyleGalleryItem pEnumStyleGalleryItem = pStyleGallery.get_Items("Marker Symbols", strStartPath + "\\mlb.ServerStyle", null); ISymbol pSymbol = null; pEnumStyleGalleryItem.Reset(); IStyleGalleryItem pStyleGalleryItem = pEnumStyleGalleryItem.Next(); while (pStyleGalleryItem != null) { if (pStyleGalleryItem.Name == name) { //获取符号 pSymbol = pStyleGalleryItem.Item as ISymbol; System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumStyleGalleryItem); break; } pStyleGalleryItem = pEnumStyleGalleryItem.Next(); } return(pSymbol); }
private void styleToolStripMenuItem_Click(object sender, EventArgs e) { IStyleGallery pStyleGlry = new ServerStyleGalleryClass(); IStyleGalleryStorage pStyleStorage = pStyleGlry as IStyleGalleryStorage; IRgbColor pRgbColor = new RgbColorClass(); pRgbColor.Red = 255; pRgbColor.Green = 1; pRgbColor.Blue = 2; IStyleGalleryItem pStyleItem = new ServerStyleGalleryItemClass(); pStyleItem.Name = "Red"; pStyleItem.Category = "Default"; pStyleItem.Item = pRgbColor; string pOldFile = pStyleStorage.TargetFile; pStyleStorage.TargetFile = @"E:\test.style"; pStyleGlry.AddItem(pStyleItem); pStyleStorage.TargetFile = pOldFile; IColor color = pRgbColor as IColor; this.Text = color.RGB.ToString(); }
private void DrawColorRamp() { string strDefaultStyleFileName = string.Format("{0}\\CNUStyles\\ESRI.ServerStyle", Application.StartupPath); IStyleGallery styleGallery = new ServerStyleGalleryClass(); IStyleGalleryItem styleGalleryItem = new ServerStyleGalleryItemClass(); IStyleGalleryStorage styleGalleryStorage = styleGallery as IStyleGalleryStorage; styleGalleryStorage.AddFile(strDefaultStyleFileName); IEnumStyleGalleryItem enumStyleGalleryItem = styleGallery.get_Items("Color Ramps", strDefaultStyleFileName, ""); enumStyleGalleryItem.Reset(); styleGalleryItem = enumStyleGalleryItem.Next(); while (styleGalleryItem != null) { m_ColorRamp = (IColorRamp)styleGalleryItem.Item; EnumStyleItem.Add(m_ColorRamp); //新建m_FillSymbol和m_colorRamp m_FillSymbol = new GradientFillSymbol(); m_FillSymbol.GradientPercentage = 1; m_FillSymbol.IntervalCount = 255; m_FillSymbol.GradientAngle = 0; m_FillSymbol.ColorRamp = m_ColorRamp; pictureBox1.Image = SymbolToBitmap(m_FillSymbol, 0, pictureBox1.Width, pictureBox1.Height); pictureBox2.Image = SymbolToBitmap(m_FillSymbol, 0, pictureBox1.Width, pictureBox1.Height); imageList1.Images.Add(m_ColorRamp.Name, pictureBox1.Image); imageList2.Images.Add(m_ColorRamp.Name, pictureBox1.Image); colorComboBox.Items.Add(pictureBox1.Image); colorComboBox1.Items.Add(pictureBox2.Image); styleGalleryItem = enumStyleGalleryItem.Next(); } }
private void DrawColorRamp() { string sInstall = ESRI.ArcGIS.RuntimeManager.ActiveRuntime.Path; string styleFilePath = sInstall + "\\Styles\\ESRI.ServerStyle"; IStyleGallery styleGallery = new ServerStyleGalleryClass(); IStyleGalleryItem styleGalleryItem = null; IStyleGalleryStorage styleGalleryStorage = styleGallery as IStyleGalleryStorage; styleGalleryStorage.AddFile(styleFilePath); IEnumStyleGalleryItem enumStyleGalleryItem = styleGallery.get_Items("Color Ramps", styleFilePath, ""); enumStyleGalleryItem.Reset(); styleGalleryItem = enumStyleGalleryItem.Next(); while (styleGalleryItem != null) { m_ColorRamp = (IColorRamp)styleGalleryItem.Item; EnumStyleItem.Add(m_ColorRamp); m_FillSymbol = new GradientFillSymbol(); m_FillSymbol.GradientAngle = 0; m_FillSymbol.ColorRamp = m_ColorRamp; pictureBox1.Image = SymbolToBitmap(m_FillSymbol, 0, pictureBox1.Width, pictureBox1.Height); imageList1.Images.Add(pictureBox1.Image); comboBoxColor.Items.Add(pictureBox1.Image); styleGalleryItem = enumStyleGalleryItem.Next(); } System.Runtime.InteropServices.Marshal.ReleaseComObject(enumStyleGalleryItem); }
public void Style(string name, List <ComboBoxSym> cmblist) { IStyleGallery pStyleGallery = new ServerStyleGalleryClass(); IStyleGalleryStorage pStyleStorage; IEnumStyleGalleryItem enumStyleGalleryItem; IStyleGalleryItem styleItem; pStyleStorage = pStyleGallery as IStyleGalleryStorage; //默认地址,也可以自己定义 string stylePath = Application.StartupPath + "\\ESRI.ServerStyle"; pStyleStorage.AddFile(stylePath); switch (name) { case "Color Ramps": IStyleGalleryClass pStyleGalleryClass = new ColorRampStyleGalleryClassClass(); enumStyleGalleryItem = pStyleGallery.get_Items("Color Ramps", "ESRI.ServerStyle", ""); enumStyleGalleryItem.Reset(); styleItem = enumStyleGalleryItem.Next(); for (int i = 1; i < 55; i++) //while(styleItem!=null) { pListRamp.Add((IColorRamp)styleItem.Item); Bitmap bitmap = PreviewSymbol(pStyleGalleryClass, styleItem.Item, cmblist[0].Width, cmblist[0].Height); cmblist[0].Items.Add(bitmap); cmblist[1].Items.Add(bitmap); styleItem = enumStyleGalleryItem.Next(); } break; case "Colors": IStyleGalleryClass pStyleGalleryClass1 = new ColorStyleGalleryClassClass(); enumStyleGalleryItem = pStyleGallery.get_Items("Colors", "ESRI.ServerStyle", ""); enumStyleGalleryItem.Reset(); styleItem = enumStyleGalleryItem.Next(); for (int i = 1; i < 55; i++) //while (styleItem != null) { pListColor.Add((IColor)styleItem.Item); Bitmap bitmap = PreviewSymbol(pStyleGalleryClass1, styleItem.Item, cmblist[0].Width, cmblist[0].Height); cmblist[0].Items.Add(bitmap); cmblist[1].Items.Add(bitmap); styleItem = enumStyleGalleryItem.Next(); } break; } pStyleStorage.RemoveFile(stylePath); }
public void Style(string name, List<ComboBoxSym> cmblist) { IStyleGallery pStyleGallery; IStyleGalleryStorage pStyleStorage; IEnumStyleGalleryItem enumStyleGalleryItem; IStyleGalleryItem styleItem; pStyleGallery = new ServerStyleGalleryClass(); pStyleStorage = pStyleGallery as IStyleGalleryStorage; //默认地址,也可以自己定义 string stylePath = Application.StartupPath + "\\ESRI.ServerStyle"; pStyleStorage.AddFile(stylePath); switch (name) { case "Color Ramps": IStyleGalleryClass pStyleGalleryClass = new ColorRampStyleGalleryClassClass(); enumStyleGalleryItem = pStyleGallery.get_Items("Color Ramps", "ESRI.ServerStyle", ""); enumStyleGalleryItem.Reset(); styleItem = enumStyleGalleryItem.Next(); for (int i = 1; i <55; i++) //while(styleItem!=null) { pListRamp.Add((IColorRamp)styleItem.Item); Bitmap bitmap = PreviewSymbol(pStyleGalleryClass, styleItem.Item, cmblist[0].Width, cmblist[0].Height); cmblist[0].Items.Add(bitmap); cmblist[1].Items.Add(bitmap); styleItem = enumStyleGalleryItem.Next(); } break; case "Colors": IStyleGalleryClass pStyleGalleryClass1 = new ColorStyleGalleryClassClass(); enumStyleGalleryItem = pStyleGallery.get_Items("Colors", "ESRI.ServerStyle", ""); enumStyleGalleryItem.Reset(); styleItem = enumStyleGalleryItem.Next(); for (int i = 1; i < 55; i++) //while (styleItem != null) { pListColor.Add((IColor)styleItem.Item); Bitmap bitmap = PreviewSymbol(pStyleGalleryClass1, styleItem.Item, cmblist[0].Width, cmblist[0].Height); cmblist[0].Items.Add(bitmap); cmblist[1].Items.Add(bitmap); styleItem = enumStyleGalleryItem.Next(); } break; } pStyleStorage.RemoveFile(stylePath); }
///<summary> ///获取符号库中符号 ///</summary> ///<param name="sServerStylePath">符号库全路径名称</param> ///<param name="sGalleryClassName">GalleryClass名称</param> ///<param name="symbolName">符号名称</param> ///<returns>符号</returns> private ISymbol GetSymbol(string sServerStylePath, string sGalleryClassName, string symbolName) { try { //ServerStyleGallery对象 IStyleGallery pStyleGaller = new ServerStyleGalleryClass(); IStyleGalleryStorage pStyleGalleryStorage = pStyleGaller as IStyleGalleryStorage; IEnumStyleGalleryItem pEnumSyleGalleryItem = null; IStyleGalleryItem pStyleGallerItem = null; IStyleGalleryClass pStyleGalleryClass = null; //使用IStyleGalleryStorage接口的AddFile方法加载ServerStyle文件 pStyleGalleryStorage.AddFile(sServerStylePath); //遍历ServerGallery中的Class for (int i = 0; i < pStyleGaller.ClassCount; i++) { pStyleGalleryClass = pStyleGaller.get_Class(i); if (pStyleGalleryClass.Name != sGalleryClassName) { continue; } //获取EnumStyleGalleryItem对象 pEnumSyleGalleryItem = pStyleGaller.get_Items(sGalleryClassName, sServerStylePath, ""); pEnumSyleGalleryItem.Reset(); //遍历pEnumSyleGalleryItem pStyleGallerItem = pEnumSyleGalleryItem.Next(); while (pStyleGallerItem != null) { if (pStyleGallerItem.Name == symbolName) { //获取符号 ISymbol pSymbol = pStyleGallerItem.Item as ISymbol; System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem); System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass); return(pSymbol); } pStyleGallerItem = pEnumSyleGalleryItem.Next(); } } System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem); System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass); return(null); } catch (Exception Err) { MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return(null); } }
static IStyleGallery GetStyleGallery(string stylePath) { IStyleGallery styleGallery = null; String tempPath = stylePath.ToLower(); if (tempPath.Contains(".serverstyle")) { styleGallery = new ServerStyleGalleryClass(); } else { styleGallery = new StyleGalleryClass(); } return(styleGallery); }
private void demo2(string CurrentStyleFile, string CurrentStyleGalleryClass) { IStyleGallery pStyleGallery = new ServerStyleGalleryClass(); IStyleGalleryStorage pStyleGalleryStorage; pStyleGalleryStorage = pStyleGallery as IStyleGalleryStorage; //增加符号文件 pStyleGalleryStorage.AddFile(CurrentStyleFile); //根据当前符号的类别和文件得到符号的枚举循环 //符号类别包括Fill Symbol,Line Symbol等 IEnumStyleGalleryItem mEnumStyleItem; mEnumStyleItem = pStyleGallery.get_Items(CurrentStyleGalleryClass, CurrentStyleFile, ""); //得到符号文件类别的各个条目,增加到一个Combox中 IEnumBSTR pEnumBSTR = pStyleGallery.get_Categories(CurrentStyleGalleryClass); pEnumBSTR.Reset(); string Category = ""; Category = pEnumBSTR.Next(); while (Category != null) { //cbxCategory.Items.Add(Category); Category = pEnumBSTR.Next(); } //得到各个符号并转化为图片 mEnumStyleItem.Reset(); IStyleGalleryItem mStyleItem = mEnumStyleItem.Next(); int ImageIndex = 0; IStyleGalleryClass mStyleClass = new FillSymbolStyleGalleryClassClass(); while (mStyleItem != null) { //调用另一个类的方法将符号转化为图片 Bitmap bmpB = StyleGalleryItemToBmp(32, 32, mStyleClass, mStyleItem); Bitmap bmpS = StyleGalleryItemToBmp(16, 16, mStyleClass, mStyleItem); Largeimage.Images.Add(bmpB); Smallimage.Images.Add(bmpS); ListViewItem lvItem = new ListViewItem(new string[] { mStyleItem.Name, mStyleItem.ID.ToString(), mStyleItem.Category }, ImageIndex); this.lvRendererFields.Items.Add(lvItem); mStyleItem = mEnumStyleItem.Next(); ImageIndex++; } //必须采用此方式进行释放,第二次才能正常读取 System.Runtime.InteropServices.Marshal.ReleaseComObject(mEnumStyleItem); }
/// <summary> /// 获取指定种类,指定符号id的符号 /// </summary> /// <param name="sGallery">符号种类(e.g.填充颜色)</param> /// <param name="id">符号id</param> /// <returns>符号</returns> public static ISymbol GetStyleSymbol(string sGallery, int id) { try { IStyleGallery pStyleGallery = new ServerStyleGalleryClass(); IStyleGalleryStorage pStyleGalleryStorage = pStyleGallery as IStyleGalleryStorage; for (int i = pStyleGalleryStorage.FileCount - 1; i >= 0; i--) { pStyleGalleryStorage.RemoveFile(pStyleGalleryStorage.get_File(i)); } pStyleGalleryStorage.AddFile(_STYLEFILE); IEnumStyleGalleryItem pEnumStyleItem = pStyleGallery.get_Items(sGallery, _STYLEFILE, ""); pEnumStyleItem.Reset(); IStyleGalleryItem mStyleItem = pEnumStyleItem.Next(); IStyleGalleryClass mStyleClass = null; for (int i = 0; i < pStyleGallery.ClassCount; i++) { mStyleClass = pStyleGallery.get_Class(i); string str = mStyleClass.Name; if (str == sGallery) { break; } } ISymbol result = null; while (mStyleItem != null) { if (mStyleItem.ID == id) { result = mStyleItem.Item as ISymbol; break; } mStyleItem = pEnumStyleItem.Next(); } System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumStyleItem); return(result); } catch { return(null); } }
//添加GLISTBOX项 private void addListBoxItem(ISymbol symbol) { IStyleGallery styleGallery; IStyleGalleryItem styleGalleryItem; IStyleGalleryStorage styleGalleryStorge; styleGalleryItem = new ServerStyleGalleryItemClass(); styleGalleryItem.Name = this.txtSymbolName.Text; styleGalleryItem.Category = "default"; object objSymbol = symbol; styleGalleryItem.Item = objSymbol; styleGallery = new ServerStyleGalleryClass(); styleGalleryStorge = styleGallery as IStyleGalleryStorage; styleGalleryStorge.TargetFile = fileName; ISymbologyStyleClass pSymbolClass = psymbologyStyleClass; pSymbolClass.AddItem(styleGalleryItem, 0); pSymbolClass.SelectItem(0); Image image = null; if (symbol is IMarker3DSymbol) { IMarker3DSymbol mar3dsym = symbol as IMarker3DSymbol; stdole.IPicture pic = mar3dsym.Thumbnail; image = Image.FromHbitmap(new System.IntPtr(pic.Handle)); } else { stdole.IPictureDisp pPicture = pSymbolClass.PreviewItem(styleGalleryItem, 140, 15); image = Image.FromHbitmap(new System.IntPtr(pPicture.Handle)); } GridPanel panel = supergrid.PrimaryGrid; GridRow row = new GridRow(image); panel.Rows.Add(row); psymbologyStyleClass.RemoveItem(0); imagelist.Add(image); Symbollist.Add(symbol); }
/// <summary> /// 读取ServerStyle中的文件并显示 /// </summary> /// <param name="StyleGalleryClass">符号文件的种类</param> /// <param name="CategoryClass">符号的种类</param> /// <param name="cbxCategory">符号文件的种类的容器</param> /// <param name="lvSymbol">符号位图的容器</param> public static void ReadServerStyle(string StyleGalleryClass, string CategoryClass, ComboBox cbxCategory, ListView lvSymbol) { lvSymbol.Items.Clear(); lvSymbol.LargeImageList.Images.Clear(); IStyleGallery pStyleGallery = new ServerStyleGalleryClass(); IStyleGalleryStorage pStyleGalleryStorage = pStyleGallery as IStyleGalleryStorage; // 增加符号文件 //pStyleGalleryStorage.TargetFile = _STYLEFILE; for (int i = pStyleGalleryStorage.FileCount - 1; i >= 0; i--) { pStyleGalleryStorage.RemoveFile(pStyleGalleryStorage.get_File(i)); } pStyleGalleryStorage.AddFile(_STYLEFILE); // 根据当前符号的类别和文件得到符号的枚举循环子,符号类别包括Fill Symbol,Line Symbol等 IEnumStyleGalleryItem pEnumStyleItem = pStyleGallery.get_Items(StyleGalleryClass, _STYLEFILE, ""); // 得到符号文件类别的各个条目,增加到一个Combox中 if (cbxCategory != null) { cbxCategory.Items.Clear(); cbxCategory.Items.Add(_ALLSYMBOLS); IEnumBSTR pEnumBSTR = pStyleGallery.get_Categories(StyleGalleryClass); pEnumBSTR.Reset(); string Category = ""; Category = pEnumBSTR.Next(); while (Category != null) { cbxCategory.Items.Add(Category); Category = pEnumBSTR.Next(); } } pEnumStyleItem.Reset(); IStyleGalleryItem mStyleItem = pEnumStyleItem.Next(); IStyleGalleryClass mStyleClass = null; for (int i = 0; i < pStyleGallery.ClassCount; i++) { mStyleClass = pStyleGallery.get_Class(i); string str = mStyleClass.Name; if (str == StyleGalleryClass) { break; } } // 得到各个符号并转化为图片 int ImageIndex = 0; ImageList Largeimage = lvSymbol.LargeImageList; if (CategoryClass == "" || CategoryClass == _ALLSYMBOLS) { while (mStyleItem != null) { // 调用另一个类的方法将符号转化为图片 Bitmap bmpB = StyleGalleryItemToBmp(32, 32, mStyleClass, mStyleItem); Largeimage.Images.Add(bmpB); ListViewItem lvItem = new ListViewItem(new string[] { mStyleItem.Name, mStyleItem.ID.ToString(), mStyleItem.Category }, ImageIndex); lvSymbol.Items.Add(lvItem); ImageIndex++; mStyleItem = pEnumStyleItem.Next(); } } else { while (mStyleItem != null) { if (CategoryClass == mStyleItem.Category) { // 调用另一个类的方法将符号转化为图片 Bitmap bmpB = StyleGalleryItemToBmp(32, 32, mStyleClass, mStyleItem); Largeimage.Images.Add(bmpB); ListViewItem lvItem = new ListViewItem(new string[] { mStyleItem.Name, mStyleItem.ID.ToString(), mStyleItem.Category }, ImageIndex); lvSymbol.Items.Add(lvItem); ImageIndex++; } mStyleItem = pEnumStyleItem.Next(); } } // 必须采用此方式进行释放,第二次才能正常读取 System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumStyleItem); }
public static IMarkerSymbol FindMarkerSym(string stylename, string stylecategory, string symname) { //查找Symbol无法实现,StyleGallery属于Desktop IStyleGallery pStyGall; IStyleGalleryStorage pStyGallStor; IStyleGalleryItem pStyGallItem; IMarkerSymbol pMrkSym = null; IEnumStyleGalleryItem pEnumStyGallItm; string pStylePath = null; pStyGall = new ServerStyleGalleryClass(); pStyGallStor = pStyGall as IStyleGalleryStorage; try { pStylePath = pStyGallStor.DefaultStylePath + "Civic.ServerStyle"; pStyGallStor.TargetFile = pStylePath; //pStyGallStor.AddFile(pStylePath); //pStyGall.LoadStyle(pStylePath,""); 看来不能使用LoadStyle,出现未指定的错误 pStyGallStor.AddFile(pStylePath); pEnumStyGallItm = pStyGall.get_Items("Marker Symbols", stylename, stylecategory); pEnumStyGallItm.Reset(); //Make sure it contains markers pStyGallItem = pEnumStyGallItm.Next() as IStyleGalleryItem; //if(pStyGallItem==null) {MessageBox.Show("没有指定的Symbol");return null;} //pEnumStyGallItm.Reset(); //Make sure it contains markers //pStyGallItem = pEnumStyGallItm.Next() as IStyleGalleryItem; while (pStyGallItem != null) { if (pStyGallItem.Name.Equals(symname)) { pMrkSym = pStyGallItem.Item as IMarkerSymbol; break; } pStyGallItem = pEnumStyGallItm.Next() as IStyleGalleryItem; } return(pMrkSym); } catch (Exception e) { MessageBox.Show(e.Message); return(null); } finally{ pStyGallStor.RemoveFile(pStylePath); pStyGall = null; pStyGallStor = null; pStyGallItem = null; pEnumStyGallItm = null; } //return null; }
///<summary> ///��ȡ���ſ��з��� ///</summary> ///<param name="sServerStylePath">���ſ�ȫ·������</param> ///<param name="sGalleryClassName">GalleryClass����</param> ///<param name="symbolName">��������</param> ///<returns>����</returns> private ISymbol GetSymbol(string sServerStylePath, string sGalleryClassName, string symbolName) { try { //ServerStyleGallery���� IStyleGallery pStyleGaller = new ServerStyleGalleryClass(); IStyleGalleryStorage pStyleGalleryStorage = pStyleGaller as IStyleGalleryStorage; IEnumStyleGalleryItem pEnumSyleGalleryItem = null; IStyleGalleryItem pStyleGallerItem = null; IStyleGalleryClass pStyleGalleryClass = null; //ʹ��IStyleGalleryStorage�ӿڵ�AddFile��������ServerStyle�ļ� pStyleGalleryStorage.AddFile(sServerStylePath); //����ServerGallery�е�Class for (int i = 0; i < pStyleGaller.ClassCount; i++) { pStyleGalleryClass = pStyleGaller.get_Class(i); if (pStyleGalleryClass.Name != sGalleryClassName) continue; //��ȡEnumStyleGalleryItem���� pEnumSyleGalleryItem = pStyleGaller.get_Items(sGalleryClassName, sServerStylePath, ""); pEnumSyleGalleryItem.Reset(); //����pEnumSyleGalleryItem pStyleGallerItem = pEnumSyleGalleryItem.Next(); while (pStyleGallerItem != null) { if (pStyleGallerItem.Name == symbolName) { //��ȡ���� ISymbol pSymbol = pStyleGallerItem.Item as ISymbol; System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem); System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass); return pSymbol; } pStyleGallerItem = pEnumSyleGalleryItem.Next(); } } System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem); System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass); return null; } catch (Exception Err) { MessageBox.Show(Err.Message, "��ʾ", MessageBoxButtons.OK, MessageBoxIcon.Information); return null; } }
private void btnConvert_Click(object sender, EventArgs e) { if (this.listBox1.Items.Count == 0) { MessageBox.Show("请选择要转换的源符号库"); } else if (this.txtDest.Text.Length == 0) { MessageBox.Show("请输入转出目录"); } else { IStyleGallery gallery; int num3; string str; SaveFileDialog dialog = new SaveFileDialog { FileName = this.txtDest.Text }; Stream stream = dialog.OpenFile(); if (stream != null) { Stream manifestResourceStream; int num; if (!this.m_IsStyleFile) { manifestResourceStream = base.GetType() .Assembly.GetManifestResourceStream( "Yutai.ArcGIS.Controls.Controls.SymbolUI.template.style"); } else { manifestResourceStream = base.GetType() .Assembly.GetManifestResourceStream( "Yutai.ArcGIS.Controls.Controls.SymbolUI.template.ServerStyle"); } byte[] buffer = new byte[4096]; while ((num = manifestResourceStream.Read(buffer, 0, 4096)) > 0) { stream.Write(buffer, 0, num); } stream.Close(); } if (this.m_IsStyleFile) { gallery = new ServerStyleGalleryClass(); num3 = (gallery as IStyleGalleryStorage).FileCount - 1; while (num3 >= 0) { str = (gallery as IStyleGalleryStorage).get_File(num3); (gallery as IStyleGalleryStorage).RemoveFile(str); num3--; } } else { gallery = new MyStyleGallery(); } gallery.Clear(); (gallery as IStyleGalleryStorage).TargetFile = this.txtDest.Text; foreach (object obj2 in this.listBox1.Items) { try { IStyleGallery gallery2; if (this.m_IsStyleFile) { gallery2 = new MyStyleGallery(); } else { gallery2 = new ServerStyleGalleryClass(); num3 = (gallery2 as IStyleGalleryStorage).FileCount - 1; while (num3 >= 0) { str = (gallery2 as IStyleGalleryStorage).get_File(num3); (gallery2 as IStyleGalleryStorage).RemoveFile(str); num3--; } } gallery2.Clear(); (gallery2 as IStyleGalleryStorage).AddFile(obj2.ToString()); for (num3 = 0; num3 < gallery2.ClassCount; num3++) { string name = gallery2.get_Class(num3).Name; IEnumBSTR mbstr = gallery2.get_Categories(name); string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(obj2.ToString()); mbstr.Reset(); for (string str4 = mbstr.Next(); str4 != null; str4 = mbstr.Next()) { IEnumStyleGalleryItem item = gallery2.get_Items(name, obj2.ToString(), str4); item.Reset(); IStyleGalleryItem item2 = null; try { item2 = item.Next(); } catch { } while (item2 != null) { string str6; if (this.m_IsStyleFile) { IStyleGalleryItem item3 = new ServerStyleGalleryItemClass(); object obj3 = item2.Item; item3.Item = obj3; string str5 = item2.Name; item3.Name = str5; if (item2.Category.Length > 0) { str6 = fileNameWithoutExtension + "_" + item2.Category; item3.Category = str6; } else { item3.Category = fileNameWithoutExtension; } try { string defaultStylePath = (gallery as IStyleGalleryStorage).DefaultStylePath; int fileCount = (gallery as IStyleGalleryStorage).FileCount; gallery.AddItem(item3); } catch (Exception) { } } else { if (item2.Category.Length > 0) { str6 = fileNameWithoutExtension + "_" + item2.Category; item2.Category = str6; } else { item2.Category = fileNameWithoutExtension; } gallery.AddItem(item2); } try { item2 = item.Next(); } catch { } } } } (gallery2 as IStyleGalleryStorage).RemoveFile(obj2.ToString()); } catch (Exception) { } } try { (gallery as IStyleGalleryStorage).RemoveFile(this.txtDest.Text); } catch { } base.Close(); } }
private void btnConvert_Click(object sender, EventArgs e) { if (this.listBox1.Items.Count == 0) { MessageBox.Show("请选择要转换的源符号库"); } else if (this.txtDest.Text.Length == 0) { MessageBox.Show("请输入转出目录"); } else { this.Cursor = Cursors.WaitCursor; foreach (object obj2 in this.listBox1.Items) { try { string path = obj2.ToString(); SaveFileDialog dialog = new SaveFileDialog(); string str2 = ".style"; if (this.m_IsStyleFile) { str2 = ".ServerStyle"; } string str3 = Path.Combine(this.txtDest.Text, Path.GetFileNameWithoutExtension(path) + str2); if (File.Exists(str3)) { File.Delete(str3); } dialog.FileName = str3; Stream stream = dialog.OpenFile(); if (stream != null) { Stream manifestResourceStream; int num; IStyleGallery gallery; IStyleGallery gallery2; int num3; string str4; if (!this.m_IsStyleFile) { manifestResourceStream = base.GetType() .Assembly.GetManifestResourceStream( "Yutai.ArcGIS.Controls.Controls.SymbolUI.template.style"); } else { manifestResourceStream = base.GetType() .Assembly.GetManifestResourceStream( "Yutai.ArcGIS.Controls.Controls.SymbolUI.template.ServerStyle"); } byte[] buffer = new byte[4096]; while ((num = manifestResourceStream.Read(buffer, 0, 4096)) > 0) { stream.Write(buffer, 0, num); } stream.Close(); if (this.m_IsStyleFile) { gallery = new MyStyleGallery(); gallery2 = new ServerStyleGalleryClass(); num3 = (gallery2 as IStyleGalleryStorage).FileCount - 1; while (num3 >= 0) { str4 = (gallery2 as IStyleGalleryStorage).get_File(num3); (gallery2 as IStyleGalleryStorage).RemoveFile(str4); num3--; } } else { gallery = new ServerStyleGalleryClass(); gallery2 = new MyStyleGallery(); num3 = (gallery as IStyleGalleryStorage).FileCount - 1; while (num3 >= 0) { str4 = (gallery as IStyleGalleryStorage).get_File(num3); (gallery as IStyleGalleryStorage).RemoveFile(str4); num3--; } } gallery.Clear(); gallery2.Clear(); (gallery as IStyleGalleryStorage).AddFile(path); (gallery2 as IStyleGalleryStorage).TargetFile = str3; for (num3 = 0; num3 < gallery.ClassCount; num3++) { string name = gallery.get_Class(num3).Name; IEnumBSTR mbstr = gallery.get_Categories(name); mbstr.Reset(); for (string str6 = mbstr.Next(); str6 != null; str6 = mbstr.Next()) { IEnumStyleGalleryItem item = gallery.get_Items(name, path, str6); item.Reset(); IStyleGalleryItem item2 = null; try { item2 = item.Next(); } catch { } while (item2 != null) { if (this.m_IsStyleFile) { IStyleGalleryItem item3 = new ServerStyleGalleryItemClass(); object obj3 = item2.Item; item3.Item = obj3; string str7 = item2.Name; item3.Name = str7; string category = item2.Category; item3.Category = category; gallery2.AddItem(item3); } else { gallery2.AddItem(item2); } try { item2 = item.Next(); } catch { } } } } (gallery as IStyleGalleryStorage).RemoveFile(path); (gallery2 as IStyleGalleryStorage).RemoveFile(str3); } } catch (Exception) { } } this.Cursor = Cursors.Default; base.Close(); } }
private void btnConvert_Click(object sender, EventArgs e) { if (this.txtOrigin.Text.Length == 0) { MessageBox.Show("请选择要转换的源符号库"); } else if (this.txtDest.Text.Length == 0) { MessageBox.Show("请输入目的符号库"); } else { SaveFileDialog dialog = new SaveFileDialog { FileName = this.txtDest.Text }; Stream stream = dialog.OpenFile(); if (stream != null) { Stream manifestResourceStream; int num; IStyleGallery gallery; IStyleGallery gallery2; int num3; if (this.m_IsStyleFile) { manifestResourceStream = base.GetType() .Assembly.GetManifestResourceStream("Yutai.ArcGIS.Controls.SymbolUI.template.style"); } else { manifestResourceStream = base.GetType() .Assembly.GetManifestResourceStream( "Yutai.ArcGIS.Controls.SymbolUI.template.ServerStyle"); } byte[] buffer = new byte[4096]; while ((num = manifestResourceStream.Read(buffer, 0, 4096)) > 0) { stream.Write(buffer, 0, num); } stream.Close(); if (this.m_IsStyleFile) { gallery = new ServerStyleGalleryClass(); gallery2 = new MyStyleGallery(); } else { gallery = new MyStyleGallery(); gallery2 = new ServerStyleGalleryClass(); for (num3 = (gallery2 as IStyleGalleryStorage).FileCount - 1; num3 >= 0; num3--) { string path = (gallery2 as IStyleGalleryStorage).get_File(num3); (gallery2 as IStyleGalleryStorage).RemoveFile(path); } } (gallery as IStyleGalleryStorage).AddFile(this.txtOrigin.Text); (gallery2 as IStyleGalleryStorage).AddFile(this.txtDest.Text); for (num3 = 0; num3 < gallery.ClassCount; num3++) { string name = gallery.get_Class(num3).Name; IEnumStyleGalleryItem item = gallery.get_Items(name, this.txtOrigin.Text, ""); item.Reset(); for (IStyleGalleryItem item2 = item.Next(); item2 != null; item2 = item.Next()) { gallery2.AddItem(item2); } } } } }
/// <summary> /// 获得符号 /// </summary> /// <params name="sServerStylePath"></params> /// <params name="sGalleryClassName"></params> /// <params name="symbolName"></params> /// <returns></returns> public static ILineSymbol GetSymbol(string sServerStylePath, string sGalleryClassName, string symbolName) { IStyleGallery pStyleGallery = new ServerStyleGalleryClass(); var pStyleGalleryStorage = (IStyleGalleryStorage)pStyleGallery; ILineSymbol lineSymbol = new SimpleLineSymbolClass(); //查找到符号 pStyleGalleryStorage.TargetFile = sServerStylePath; //输入符号的地址 var pEnumStyleGalleryItem = pStyleGallery.Items["Line Symbols", sServerStylePath, sGalleryClassName]; //sGalleryClassName为输入符号库的名称 pEnumStyleGalleryItem.Reset(); var pStyleGalleryItem = pEnumStyleGalleryItem.Next(); while (pStyleGalleryItem != null) { if (pStyleGalleryItem.Name == symbolName) { lineSymbol = (ILineSymbol)pStyleGalleryItem.Item; Marshal.ReleaseComObject(pEnumStyleGalleryItem); break; } pStyleGalleryItem = pEnumStyleGalleryItem.Next(); } //定义符号的大小,已经定义好了是size=30 //lineSymbol.Width = 2; return lineSymbol; }
static IStyleGallery GetStyleGallery(string stylePath) { IStyleGallery styleGallery = null; String tempPath = stylePath.ToLower(); if (tempPath.Contains(".serverstyle")) { styleGallery = new ServerStyleGalleryClass(); } else { styleGallery = new StyleGalleryClass(); } return styleGallery; }
public static IMarkerSymbol FindMarkerSym(string stylename, string stylecategory, string symname) { //����Symbol��ʵ�֣�StyleGallery����Desktop IStyleGallery pStyGall; IStyleGalleryStorage pStyGallStor; IStyleGalleryItem pStyGallItem; IMarkerSymbol pMrkSym=null; IEnumStyleGalleryItem pEnumStyGallItm; string pStylePath=null; pStyGall=new ServerStyleGalleryClass(); pStyGallStor=pStyGall as IStyleGalleryStorage; try { pStylePath=pStyGallStor.DefaultStylePath+"Civic.ServerStyle"; pStyGallStor.TargetFile=pStylePath; //pStyGallStor.AddFile(pStylePath); //pStyGall.LoadStyle(pStylePath,""); ��������ʹ��LoadStyle������δָ���Ĵ��� pStyGallStor.AddFile(pStylePath); pEnumStyGallItm = pStyGall.get_Items("Marker Symbols",stylename,stylecategory); pEnumStyGallItm.Reset(); //Make sure it contains markers pStyGallItem = pEnumStyGallItm.Next() as IStyleGalleryItem; //if(pStyGallItem==null) {MessageBox.Show("û��ָ����Symbol");return null;} //pEnumStyGallItm.Reset(); //Make sure it contains markers //pStyGallItem = pEnumStyGallItm.Next() as IStyleGalleryItem; while(pStyGallItem!=null) { if(pStyGallItem.Name.Equals(symname)) { pMrkSym=pStyGallItem.Item as IMarkerSymbol; break; } pStyGallItem = pEnumStyGallItm.Next() as IStyleGalleryItem; } return pMrkSym; } catch(Exception e) { MessageBox.Show(e.Message); return null; } finally{ pStyGallStor.RemoveFile(pStylePath); pStyGall=null; pStyGallStor=null; pStyGallItem=null; pEnumStyGallItm=null; } //return null; }
private void btnok_Click(object sender, EventArgs e) { ////构建图片存储临时目录 //FileInfo fileInfo = new FileInfo(fileName); //string path = fileInfo.DirectoryName; //string bitmapFileName = path + @"\" + this.txtSymbolName.Text + ".bmp"; ////创建新的画图,并将底色清为白色 ////Bitmap bitmap = new Bitmap(100, 100, PixelFormat.Format24bppRgb); //Bitmap bitmap = new Bitmap(listBoxImage.ImageSize.Width - 100, listBoxImage.ImageSize.Height); //Graphics graphics = Graphics.FromImage(bitmap); //System.Drawing.Color color = System.Drawing.Color.FromArgb(0, 0, 0); //graphics.Clear(Color.White); ////将各个子样式在画图上绘制 //Bitmap image; //int startX; //int startY; //for (int i = 0; i < supergrid.PrimaryGrid.Rows.Count; i++) //{ // image = (Bitmap)imagelist[i]; // startX = picturepre.Width / 2 - (int)(imagelist[i].Size.Width * Radio) / 2; // startY = picturepre.Height / 2 - (int)(imagelist[i].Size.Height * Radio) / 2; // image.MakeTransparent(Color.Transparent); // System.Drawing.Rectangle rectangle = new Rectangle(startX-50, startY-50, (int)(imagelist[i].Size.Width * Radio), (int)(imagelist[i].Size.Height * Radio)); // graphics.DrawImage(imagelist[i], rectangle); // graphics.Save(); //} //graphics.SmoothingMode = SmoothingMode.HighQuality; //graphics.Dispose(); ////将图片保存在临时目录 //bitmap.Save(bitmapFileName, System.Drawing.Imaging.ImageFormat.Bmp); ////创建图片样式 //IPictureMarkerSymbol pictureMarkerSymbol = new PictureMarkerSymbolClass(); //pictureMarkerSymbol.CreateMarkerSymbolFromFile(esriIPictureType.esriIPictureBitmap, bitmapFileName); //pictureMarkerSymbol.Angle = 0; //pictureMarkerSymbol.Size = 30; //pictureMarkerSymbol.XOffset = 0; //pictureMarkerSymbol.YOffset = 0; for (int i = 0; i < Symbollist.Count; i++) { pMultiLineSymbol.AddLayer(Symbollist[i] as IMarkerSymbol); } IStyleGallery styleGallery; IStyleGalleryItem styleGalleryItem; IStyleGalleryStorage styleGalleryStorge; //创建新的样式 styleGalleryItem = new ServerStyleGalleryItemClass(); styleGalleryItem.Name = this.txtSymbolName.Text; styleGalleryItem.Category = "default"; object objSymbol = pMultiLineSymbol; styleGalleryItem.Item = objSymbol; styleGallery = new ServerStyleGalleryClass(); styleGalleryStorge = styleGallery as IStyleGalleryStorage; styleGalleryStorge.TargetFile = fileName; //添加新样式 //styleGallery.AddItem(styleGalleryItem); ISymbologyStyleClass pSymbolClass = psymbologyStyleClass; pSymbolClass.AddItem(styleGalleryItem, 0); pSymbolClass.SelectItem(0); //保存新样式 //styleGallery.SaveStyle(fileName, fileInfo.Name, "marker Symbols"); this.Close(); }