在第七讲 图层符号选择器的实现的第一阶段中,我们完成了符号选择器窗体的创建与调用。在第二阶段中,我们继续完成符号参数的调整与“更多符号”的加载。

2.6     符号参数调整

在地图整饰中,符号参数的调整是必须的功能。下面我们将实现符号颜色、外框颜色、线宽、角度等参数的调整。

(1)添加SymbologyControl的OnItemSelected事件,此事件在鼠标选中符号时触发,此时显示出选定符号的初始参数,事件响应函数代码如下:

代码

(2) 调整点符号的大小

添加nudSize控件的ValueChanged事件,即在控件的值改变时响应此事件,然后重新设置点符号的大小。代码如下:

代码
/// <summary> 
/// 调整符号大小-点符号
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void nudSize_ValueChanged(object sender, EventArgs e)
{
    ((IMarkerSymbol)
this.pStyleGalleryItem.Item).Size = (double)this.nudSize.Value;
    
this.PreviewImage();
}

(3)调整点符号的角度

添加nudAngle控件的ValueChanged事件,以重新设置点符号的角度。代码如下:

 

代码
/// <summary> 
/// 调整符号角度-点符号
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void nudAngle_ValueChanged(object sender, EventArgs e)
{
    ((IMarkerSymbol)
this.pStyleGalleryItem.Item).Angle = (double)this.nudAngle.Value;
    
this.PreviewImage();
}

 (4) 调整线符号和面符号的线宽

添加nudWidth控件的ValueChanged事件,以重新设置线符号的线宽和面符号的外框线的线宽。代码如下:

代码

(5)颜色转换

在ArcGIS Engine中,颜色由IRgbColor接口实现,而在.NET框架中,颜色则由Color结构表示。故在调整颜色参数之前,我们必须完成以上两种不同颜色表示方式的转换。关于这两种颜色结构的具体信息,请大家自行查阅相关资料。下面添加两个颜色转换函数。

ArcGIS Engine中的IRgbColor接口转换至.NET中的Color结构的函数:

代码
/// <summary> 
/// 将ArcGIS Engine中的IRgbColor接口转换至.NET中的Color结构
/// </summary>
/// <param name="pRgbColor">IRgbColor</param>
/// <returns>.NET中的System.Drawing.Color结构表示ARGB颜色</returns>
public Color ConvertIRgbColorToColor(IRgbColor pRgbColor)
{
    
return ColorTranslator.FromOle(pRgbColor.RGB);
}

.NET中的Color结构转换至于ArcGIS Engine中的IColor接口的函数:

代码
 /// <summary> 
/// 将.NET中的Color结构转换至于ArcGIS Engine中的IColor接口
/// </summary>
/// <param name="color">.NET中的System.Drawing.Color结构表示ARGB颜色</param>
/// <returns>IColor</returns>
public IColor ConvertColorToIColor(Color color)
{
    IColor pColor 
= new RgbColorClass();
    pColor.RGB 
= color.B * 65536 + color.G * 256 + color.R;
    
return pColor;
}

(6)调整所有符号的颜色

选择颜色时,我们调用.NET的颜色对话框ColorDialog,选定颜色后,修改颜色按钮的背景色为选定的颜色,以方便预览。双击btnColor按钮,添加如下代码:

 

代码

 (7)调整面符号的外框线颜色

同上一步类似,双击btnOutlineColor按钮,添加如下代码:

 

代码

  至此,你可以编译运行程序,看看效果如何,是不是感觉很不错了?我们已经能够修改符号的参数,自定义符号了。

       但是,SymbologyControl默认加载的是ESRI.ServerStyle文件的样式,用过ArcMap的你可能已经注意到,ArcMap中的Symbol Selector有一个“More Symbols”按钮,可以加载其它的符号和ServerStyle文件。3sdnMap当然“一个都不能少”。

转自:http://www.gissky.net/Article/1563.htm