ArcGis Engine中实现对符号的预览图输出
来源:互联网 发布:我国电力系统分析软件 编辑:程序博客网 时间:2024/05/20 06:31
在ArcGis Engine中实现对符号的预览,生成预览图片。使用的时候只要调用SymbolToBitmp(符号,宽,高)就可以返回生成的图片了。关键代码如下:
//在ArcGis Engine中实现对符号的预览,生成预览图片。使用的时候只要调用SymbolToBitmp(符号,宽,高)就可以返回生成的图片了。关键代码如下:
public static System.Drawing.Bitmap SymbolToBitmp(ISymbol pSymbol, int iwidth, int iheight, int wd)
{
//根据高宽创建图象
Bitmap bmp = new Bitmap(iwidth, iheight);
Graphics gImage = Graphics.FromImage(bmp);
gImage.Clear(Color.White);
double dpi = gImage.DpiX;
IEnvelope pEnvelope = new EnvelopeClass();
pEnvelope.PutCoords(0, 0, (double)bmp.Width, (double)bmp.Height);
tagRECT deviceRect;
deviceRect.left = 0;
deviceRect.right = bmp.Width;
deviceRect.top = 0;
deviceRect.bottom = bmp.Height;
IDisplayTransformation pDisplayTransformation = new DisplayTransformationClass();
pDisplayTransformation.VisibleBounds = pEnvelope;
pDisplayTransformation.Bounds = pEnvelope;
pDisplayTransformation.set_DeviceFrame(ref deviceRect);
pDisplayTransformation.Resolution = dpi;
IGeometry pGeo = CreateSymShape(pSymbol, pEnvelope, wd);
System.IntPtr hdc = new IntPtr();
hdc = gImage.GetHdc();
//将符号的形状绘制到图象中
pSymbol.SetupDC((int)hdc, pDisplayTransformation);
pSymbol.Draw(pGeo);
pSymbol.ResetDC();
gImage.ReleaseHdc(hdc);
gImage.Dispose();
return bmp;
}
public static ESRI.ArcGIS.Geometry.IGeometry CreateSymShape(ISymbol pSymbol, IEnvelope pEnvelope, int wd)
{// 根据传入的符号以及外包矩形区域返回对应的几何空间实体(点,线、面)
//判断是否为“点”符号
if (pSymbol is IMarkerSymbol)
{
// 为“点”符号则返回IEnvelope的中心点
IArea pArea;
pArea = pEnvelope as IArea;
return pArea.Centroid as IGeometry;
}
else
{
//判断是否为“线”符号
if (pSymbol is ILineSymbol)
{
IPolyline IpLine = new PolylineClass();
IpLine.FromPoint.PutCoords(0, pEnvelope.YMax / 2);
IpLine.ToPoint.PutCoords(pEnvelope.Width, pEnvelope.YMax / 2);
return IpLine as IGeometry;
}
else
{
//直接返回一个IEnvelope矩形区域
IEnvelope pnewEnvelope = new EnvelopeClass();
pnewEnvelope.PutCoords(wd, wd, pEnvelope.Width - wd, pEnvelope.Height-wd);
return pnewEnvelope as IGeometry;
}
}
}
- ArcGis Engine中实现对符号的预览图输出
- ArcGIS Engine中实现对符号的输出预览
- ArcGIS Desktop和Engine中对点要素图层Graduated Symbols渲染的实现
- ArcGIS Engine中实现图层属性数据的显示
- 关于arcgis engine符号库的讨论
- 关于arcgis engine符号库的讨论
- ArcGIS Engine 中对栅格数据的波段信息统计
- ArcGIS Engine下实现地图输出
- ArcGIS Engine下实现地图输出
- 基于ArcGIS Engine + C#实现用户自定义动态电力符号
- ARCGIS ENGINE符号库制作方法
- arcgis engine中添加及修改图层的字段
- Arcgis Engine鹰眼功能的实现
- ArcGis Engine 要素折点转点的代码实现
- ArcGIS Engine 中多线程的使用
- ArcGIS Engine 中ISQLQueryDialog2的命名空间
- ArcGIS Engine中关于Cursor的使用
- ArcGIS 10 影像分析工具及ArcGIS Engine的实现
- Qt中QMap的使用注意一点
- SIM卡
- Delphi Study Resource Book Catalog
- C#与SQL Server存储过程之二(调用):使用C#调用SQL Server的存储过程
- ASP.NET Session详解及常见问题处理
- ArcGis Engine中实现对符号的预览图输出
- java简单的冒泡排序法
- Bible Computer Ebooks Math Mathematics
- java简单的递归法实现数的阶乘
- 销售渠道管理的“欲擒故纵”和“移花接木”技巧
- WinXP“添加 删除 WIndows 组件”中没有IIS也能安装IIS(转)
- 工作日志3.26
- 使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast
- 享元模式