zoukankan      html  css  js  c++  java
  • 读取符号库文件

    /// <summary>
    /// 导入符号
    /// </summary>
    /// <param name="serverStylePath">符号库文件路径</param>
    public static void ImportSymbols(string serverStylePath)
    {
    if (string.IsNullOrEmpty(serverStylePath) || !File.Exists(serverStylePath))
    {
    return;
    }

    int iIndexPoint = serverStylePath.LastIndexOf('\');
    string strName = serverStylePath.Substring(iIndexPoint + 1);
    int imageIndex = 1;
    try
    {
    IStyleGallery pStyleGallery = new ServerStyleGalleryClass();
    SymbologyControlClass pSymbologyControlClass = new SymbologyControlClass();
    IStyleGalleryStorage pStyleGalleryStorage = pStyleGallery as IStyleGalleryStorage;
    pStyleGalleryStorage.AddFile(serverStylePath);
    pStyleGalleryStorage.TargetFile = serverStylePath;
    pStyleGallery.ImportStyle(serverStylePath);
    ISymbologyStyleClass pSymbologyStyleClass = null;
    for (int j = 0; j < pStyleGallery.ClassCount; j++)
    {
    IEnumStyleGalleryItem enumItems = null;
    try
    {
    IStyleGalleryClass styleGalleryClass = pStyleGallery.Class[j];
    enumItems = pStyleGallery.Items[styleGalleryClass.Name, "", ""];
    pSymbologyStyleClass = pSymbologyControlClass.GetStyleClass(SymbolOperate.GetTypeName(styleGalleryClass.Name));
    if (enumItems == null) continue;
    enumItems.Reset();
    IStyleGalleryItem pStyleItem = enumItems.Next();
    List<IRow> symbloList = new List<IRow>();
    while (pStyleItem != null)
    {
    IPersistStream pPersistStream = pStyleItem as IPersistStream;
    IMemoryBlobStream pBlobStream = new MemoryBlobStreamClass();
    pPersistStream.Save(pBlobStream, 0);
    IMemoryBlobStreamVariant mbsv = (IMemoryBlobStreamVariant)pBlobStream;
    object obj;
    mbsv.ExportToVariant(out obj);
    stdole.IPictureDisp picture = pSymbologyStyleClass.PreviewItem(pStyleItem, PictureWidth, PictureHeight);

    Image pImage = AxHostConverter.GetImageFromDispPicture(picture);
    SymbolLibraryRow pRow = new SymbolLibraryRow();
    pRow.SetValue(SymbolLibraryRow.FIELD_SYMBOLNAME, strName);
    pRow.SetValue(SymbolLibraryRow.FIELD_SYMBOLCLASS, styleGalleryClass.Name);
    pRow.SymbolStyle = obj as byte[];
    pRow.SymbolID = pStyleItem.ID;
    pRow.Image = SymbolOperate.GetByteByImage(pImage);
    pRow.SymbolItemName = pStyleItem.Name;
    pRow.SymbolItemCategory = pStyleItem.Category;
    symbloList.Add(pRow);
    pStyleItem = enumItems.Next();
    imageIndex++;
    if (imageIndex % 20 == 0)
    {
    GC.Collect();
    System.Windows.Forms.Application.DoEvents();
    }
    }
    SymbolLibraryTable.symbolLibraryTable.Save(symbloList);
    }
    catch
    {

    }
    finally
    {
    ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(enumItems);
    }

    }
    pStyleGallery.Clear();
    }
    catch
    {

    }
    }

  • 相关阅读:
    申请国家自然科学基金项目的一点体会(周浙昆)
    漫谈影响自然基金申请的因素
    凡是过往,皆为序章—写在2018年国基揭榜之时
    再谈国家基金项目申请中的几个问题
    国家基金申请书中的科学问题与关键问题
    我喜欢这样的国家自然科学基金本子
    Fedora 28 —— install fonts for WPS
    清华11篇撤稿背后:院方早已处理,被曝光才公开结果
    CPU:chip、core 和 processor 的关系
    Fedora 28 —— chm 阅读器
  • 原文地址:https://www.cnblogs.com/lzh5d/p/7001563.html
Copyright © 2011-2022 走看看