Engine跟踪层自定义图标
用的是IPictureMarkerSymbol接口,例子程序里有了一个很好的函数,我稍微改了下参数,做成了可以改变路径的了。返回值是ISymbol。
private ISymbol CreateStandardLogoSymbol(string m_logoPath)
{
IPictureMarkerSymbol pictureMarkerSymbol = new PictureMarkerSymbolClass();
pictureMarkerSymbol.CreateMarkerSymbolFromFile(esriIPictureType.esriIPictureBitmap, m_logoPath);
pictureMarkerSymbol.Size = 100;
//IColor whiteTransparencyColor = ESRI.ArcGIS.ADF.Connection.Local.Converter.ToRGBColor(Color.FromArgb(255, 255, 255)) as IColor;
//pictureMarkerSymbol.BitmapTransparencyColor = whiteTransparencyColor;
return pictureMarkerSymbol as ISymbol;
}
重新读了一下IGraphicTracker的接口说明,发现IGraphicTracker既能够接受图标,又能够创造图标。。添加用的是add,创造的话用的是CreateSymbol...很幸运的是,CreateSymbol的参数就是ISymble接口的。
于是乎,很简单的几句话就搞定了:
ISymbol mysymbol; //定义一个接口
//调用上面的函数实例化。。
mysymbol = CreateStandardLogoSymbol(@"E:\PROJECT\MyFirstArcEngine\MyFirstArcEngine\Image\refresh.bmp");
//用IGraphicTracker创建IGraphicTrackerSymbol
IGraphicTrackerSymbol gtSymbol1 = m_graphicTracker.CreateSymbol(mysymbol, null);
m_GTSymbols.Add(0, gtSymbol1);
一切就顺理成章了。。不过经过实验,似乎只能支持bmp的图标,png和icon的似乎都不支持。。