【ArcGIS Pro二次开发】(87):样式_Style的用法

发布于:2025-02-15 ⋅ 阅读:(26) ⋅ 点赞:(0)

.Stylx类型的文件即为样式库文件,保存了符号样式。


1、根据名字获取当前工程中的style

//获取当前工程中的所有style
var ProjectStyles = Project.Current.GetItems<StyleProjectItem>();

//根据名字找出指定的style
StyleProjectItem style = ProjectStyles.First(x => x.Name == "村规样式");

2、新建style

// 创建.stylx文件,注意后缀
string styleToCreate = @"C:\Temp\NewStyle.stylx";
StyleHelper.CreateStyle(Project.Current, styleToCreate);

3、加载style到当前工程

public Task AddStyleItemAsync(StyleProjectItem style, StyleItem itemToAdd)
{
  return QueuedTask.Run(() =>
  {
    //添加StyleItem
    style.AddItem(itemToAdd);
  });
}

4、从工程中移除style

public Task AddStyleItemAsync(StyleProjectItem style, StyleItem itemToAdd)
{
  return QueuedTask.Run(() =>
  {
    //移除StyleItem
    style.RemoveStyle(itemToAdd);
  });
}

5、给style添加符号项

public Task AddStyleItemAsync(StyleProjectItem style, StyleItem itemToAdd)
{
  return QueuedTask.Run(() =>
  {
    //添加StyleItem
    style.AddItem(itemToAdd);
  });
}

6、从style中移除符号项

public Task RemoveStyleItemAsync(StyleProjectItem style, StyleProjectItem style, StyleItem itemToRemove)
{
  return QueuedTask.Run(() =>
  {
    //移除StyleItem
    style.RemoveItem(itemToRemove);
  });
}

7、确定style是否与当前版本匹配

public async Task<bool> IsCurrent(string stylePath)
{
  //加载style
  StyleHelper.AddStyle(Project.Current, stylePath));
  StyleProjectItem style = Project.Current.GetItems<StyleProjectItem>().First(x => x.Path == stylePath);

  //获取目标属性IsCurrent
  return style.IsCurrent;
}

8、升级style

public async Task<bool> UpgradeStyleAsync(string stylePath)
{
  //加载style
  StyleHelper.AddStyle(Project.Current, stylePath));
  StyleProjectItem style = Project.Current.GetItems<StyleProjectItem>().First(x => x.Path == stylePath);

  // 如果是可以升级的话
  if (style.CanUpgrade)
  {
    StyleHelper.UpgradeStyle(style));
  }
}

9、在style中搜索特定的Item

//根据关键词搜索特定的SymbolStyleItem 
SymbolStyleItem item = (SymbolStyleItem)style.LookupItem(StyleItemType.PointSymbol, key);

//点符号
return style.SearchSymbols(StyleItemType.PointSymbol, searchString);

//线符号
return style.SearchSymbols(StyleItemType.LineSymbol, searchString);

//面符号
return await style.SearchSymbols(StyleItemType.PolygonSymbol, searchString);

//颜色
return style.SearchColors(searchString);

//色带
return await style.SearchColorRamps(searchString);

//指北针
return style.SearchNorthArrows(searchString);

//比例尺
return style.SearchScaleBars(searchString);

//图例
return style.SearchLegends(searchString);