Engine中如何为矢量或者栅格数据设置缩略图?

Engine中如何为矢量或者栅格数据设置缩略图?也就是在查看数据的Item Description时显示出缩略图,类似于ArcCatalog中的Create Thumbnail功能。
已邀请:

朱新颖

赞同来自:

【解决办法】:
1, 需要获取stdole.IPicture对象,也就是先生成一个图片。对于栅格或矢量数据,可以使用IActiveView.Output输出图片,对于栅格数据,还可以使用IRasterLayerExport将栅格图层输出成图片。
2, 使用IGxThumbnail.Thumbnail设置缩略图,之前需要创建IGxDataset接口,然后将其转为IGxThumbnail。
注:该接口只能在Desktop许可中使用。下面代码以影像数据为例:
IDatasetName datasetName = new RasterDatasetNameClass();
IWorkspaceName workspaceName = new WorkspaceNameClass();
workspaceName.WorkspaceFactoryProgID = esriDataSourcesRaster.RasterWorkspaceFactory;
string pathName = @E:ZhuXinying测试数据;
string name = image.tif;
string picPathName = @E:tempzxy.jpg;
workspaceName.PathName = pathName ;
datasetName.WorkspaceName = workspaceName;
datasetName.Name = name;
System.Drawing.Image image =Image.FromFile(picPathName) ;
IPicture pic = IPictureConverter.ImageToIPicture(image);
IGxDataset gxDataset = new GxRasterDatasetClass();
gxDataset.DatasetName = datasetName;
IGxThumbnail gxThumbnail = gxDataset as IGxThumbnail;
gxThumbnail.Thumbnail = pic;

实现Image到IPicture的转换,还需要加上下面代码:
public sealed class IPictureConverter : AxHost { private IPictureConverter() : base() { }
public static stdole.IPicture ImageToIPicture(Image image) {return (stdole.IPicture)GetIPictureFromPicture(image); }
public static Image IPictureToImage(stdole.IPicture picture) { return GetPictureFromIPicture(picture);} }

要回复问题请先登录注册