在水晶报表中加载ArcEngine地图
来源:互联网 发布:编程语音排行榜 编辑:程序博客网 时间:2024/04/28 21:29
众所周知,水晶报表中动态更新,只能通过与数据库的连接实现,于是得出,若要将地图窗口的视图动态打印出来,可以通过以下这种思路:
1.构建数据表,最好是在本地,避免网络耗时;在其中添加blob字段。
2.程序中加载Crystal viewer,与报表关联;
3.编程获取mapcontrol的当前视图,并导出为图像格式;
4.将ArcEngine导出的图片通过二进制格式读入到报表关联的数据库blob字段中;
5.针对水晶报表中blob字段对应的对象,则可以显示出欲打印的地图。
部分参考代码如下:
private void simpleButton1_Click(object sender, System.EventArgs e)
{
IObjectCopy ObjectCopy = new ESRI.ArcGIS.esriSystem.ObjectCopyClass();
//输出图片代码
Form2 frm = new Form2();
frm.ShowDialog();
}
private void Form2_Load(object sender, System.EventArgs e)
{
YSSQ cr = new YSSQ();
DataSet ds = new DataSet(); String path;
DataColumn column = new DataColumn(); DataRow row;
//调整格式
BlobFieldObject BObj;
BObj = cr.ReportDefinition.ReportObjects["XMTB1"] as BlobFieldObject;
//构造一个对应于xsd文件的表结构
ds.Tables.Add("Map");
ds.Tables[0].Columns.Add("XMBH", System.Type.GetType("System.String"));
ds.Tables[0].Columns.Add("XMTB", System.Type.GetType("System.Byte[]"));
//写入数据
path = "1053.jpg";
row = ds.Tables[0].NewRow();
row[0] = "J0000001";
FileStream fs = new FileStream(path, FileMode.Open);//获取文件流
BinaryReader br = new BinaryReader(fs);//创建二进制读取对象
int len = (int)br.BaseStream.Length;
row[1] = br.ReadBytes(len);
ds.Tables[0].Rows.Add(row);
br.Close(); fs.Close();
cr.SetDataSource(ds);
this.crystalReportViewer1.ReportSource = cr;
- 在水晶报表中加载ArcEngine地图
- C#在水晶报表中加载ArcEngine地图
- 水晶报表中动态加载报表字段
- 水晶报表中如何动态加载图片
- 水晶报表中加载本地图片
- 在vb中动态加载水晶报表rpt文件的方法
- 水晶报表加载失败
- 水晶报表加载失败
- 在水晶报表中显示条形码
- 在Delphi 中如何使用水晶报表
- 在水晶报表中显示条形码[转]
- 在水晶报表中显示条形码
- 在水晶报表中显示条形码
- 在VB中使用水晶报表总结
- 在JSP中实现水晶报表
- 在VC中使用水晶报表
- 如何在VS2005中发布水晶报表
- 在C#中使用水晶报表
- 一个计算机高手的成长历程
- C++ placement new
- Global Warming
- 关于电子元器件
- 最新xampp下安装mod_security,mod_evasive,mod-cband笔记
- 在水晶报表中加载ArcEngine地图
- 北京哪有Oracle数据库专家培训呀?
- FLASH位宽为8、16、32时,CPU与外设之间地址线的连接方法
- ubuntu 使用本地软件包作为安装源(转http://www.happyyezi.cn/linux/119/)
- Java如何操作Word, Excel, PDF文档?
- Flex DataGrid中itemEditBegin与itemEditBegin配合验证正浮点数的输入的例子
- PHP将全角空格转成半角, 并去除头尾空格
- 调程序的小女孩
- ASP.NET缓存概念及其应用浅析