在ArcGis Engine中实现对符号的预览,生成预览图片。使用的时候只要调用SymbolToBitmp(符号,宽,高)就可以返回生成的图片了。关键代码如下:

public System.Drawing.Bitmap SymbolToBitmp(ESRI.ArcGIS.Display.ISymbol pSymbol,int iwidth,int iheight)

{

//根据高宽创建图象

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);

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 ESRI.ArcGIS.Geometry.IGeometry CreateSymShape(ISymbol pSymbol,IEnvelope pEnvelope)

{// 根据传入的符号以及外包矩形区域返回对应的几何空间实体(点,线、面)

//判断是否为“点”符号

ESRI.ArcGIS.Display.IMarkerSymbol IMarkerSym;

IMarkerSym = pSymbol as IMarkerSymbol;

if (IMarkerSym != null)

{

// 为“点”符号则返回IEnvelope的中心点

IArea pArea ;

pArea = pEnvelope as IArea;

return pArea.Centroid as IGeometry;

}

else

{

//判断是否为“线”符号

ESRI.ArcGIS.Display.ILineSymbol IlineSym;

ESRI.ArcGIS.Display.ITextSymbol ITextSym;

IlineSym = pSymbol as ILineSymbol;

ITextSym = pSymbol as ITextSymbol;

if(IlineSym != null || ITextSym != null)

{

//返回45度的对角线

ESRI.ArcGIS.Geometry.IPolyline IpLine;

IpLine = new PolylineClass();

IpLine.FromPoint = pEnvelope.LowerLeft;

IpLine.ToPoint  = pEnvelope.UpperRight;

return IpLine as IGeometry;

}

else

{

//直接返回一个IEnvelope矩形区域

return pEnvelope as IGeometry;

}

}

}

引用:http://www.gissky.com/Gis/ShowSContent.asp?SbjID=1&ID=1133

下面是自己用VC开发出来的符号浏览器:

转载于:https://www.cnblogs.com/sunsky/archive/2010/03/27/1698348.html

ArcEngine中实现对符号的预览图输出相关推荐

  1. 如何生成IStyleGalleryItem和ISymbol对象的预览图(转载)

    http://blog.csdn.net/giselite/article/details/8451877 来看一下ArcMap的符号选择器: ArcMap的符号选择器都提供了符号的预览图,另一个预览 ...

  2. 如何在WordPress中显示链接的实时预览

    Have you ever seen sites that show a live preview of links when you bring your mouse over them? That ...

  3. Win10文件夹中图片不显示预览图解决方法

    Win10文件夹中图片不显示预览图解决方法分享.如果我们在文件夹里面有很多的图片文件,可以通过预览图来快速的找到自己需要的图片.但是有用户却发现电脑文件夹里面图片不会显示缩略图,今天我们一起来看看如何 ...

  4. 在报表(FastReport)中动态载入jpg照片,预览时所有的记录都显示的是一张照片

    在报表(FastReport)中动态载入jpg照片,预览时所有的记录都显示的是一张照片 unit Unit1; interface uses Windows, Messages, SysUtils, ...

  5. Taro框架中 Image 和 Video 组件预览图片/视频时添加明显的关闭按钮以关闭全屏预览

    需求 Taro框架中 Image 和 Video 组件预览图片/视频时 添加明显的关闭按钮 以关闭全屏观看,避免用户直接操作返回后导致页面空白(原有消息记录消失 - 重新进入项目首页) [补充] 全屏 ...

  6. wps中普通视图与打印预览内容显示不一致的解决方法

    wps中普通视图与打印预览内容显示不一致的解决方法 问题形式 需要打印Excel表中的内容,但在"普通视图"中将格式调好后,点击"打印预览"一看,嘿,一些单元格 ...

  7. Excel中普通视图与打印预览内容显示不一致的解决方法

    原文地址为: Excel中普通视图与打印预览内容显示不一致的解决方法 一.问题:需要打印Excel表中的内容,但在"普通视图"中将格式调好后,点击"打印预览"一 ...

  8. winform界面嵌入dwg图纸_WPF中使用WinForm控件预览DWG文件(学习笔记)

    操作环境:XP,C# ,.Net4.0和VS2010中测试 WinForm中使用DWGThumbnail不用这么麻烦,下面讨论的是在WPF中使用,WPF中无法直接引用DWGThumbnail.ocx来 ...

  9. vue3,电商项目中的商品详情-图片预览组件

    目的:完成商品图片预览功能和切换 分享一个vueuse的插件useMouseInElement useMouseInElement的官方文档 // 监听DOM元素 target 绑定的DOM元素中鼠标 ...

最新文章

  1. java 读取远程文件夹_java读取远程共享文件 | 学步园
  2. 68.视图在数据库系统三级结构的哪一级上?
  3. asp获取屏幕分辨率
  4. CTF-密码学-攻防世界-幂数加密(云影加密)解密脚本
  5. 挪动脑袋吃汉堡?AR版《贪吃蛇》帮你治好颈椎病
  6. php mysql.x86 64_centos7.2yum安装php70w.x86_64
  7. 1034 有理数四则运算 (20 分)java
  8. c程序设计语言1-10答案,C语言程序设计试卷及答案_1(10页)-原创力文档
  9. 【BZOJ 1503】郁闷的出纳员【权值线段树】
  10. 插入导频法实现载波通信matlab,插入导频法.ppt
  11. 莫教引动虚阳发,精竭容枯百病 侵
  12. LifecycleBeanPostProcessor的作用
  13. Hotspot Object本地方法实现 源码解析
  14. 一年后再回头看系列之C/C++中的选择法排序、冒泡排序
  15. 暂停速率 mps是什么意思?
  16. Flex RemoteObject之BUG
  17. 几款数据恢复工具的使用
  18. oracle 几种锁,oracle_基于oracle中锁的深入理解,ORACLE里锁有以下几种模式:0:no - phpStudy...
  19. 量子力学 一 基础4 态空间、对偶与线性算符
  20. 自己设计 PCB 电路板,需要学习哪些科目?

热门文章

  1. Golang实践录:静态资源文件整合:web服务
  2. ethtool的内核流程跟踪
  3. 03-NIO通讯模型
  4. 【kafka】Kafka Fetch Session 剖析
  5. 【Elasticsearch】使用两阶段提交在 Elasticsearch 中模拟事务功能
  6. 80-450-024-原理-索引-索引练习
  7. thriftserver的SparkSQL命令行操作Hive表
  8. 95-190-444-源码-window-Trigger-EventTimeTrigger
  9. 【MySQL】MySQL 8报错 Unknown initial character set index 255 received from server. Initial client char
  10. Spring : @Value注解