|
|
|
|
using ESRI.ArcGIS.Carto;
|
|
|
|
|
using ESRI.ArcGIS.Controls;
|
|
|
|
|
using ESRI.ArcGIS.Display;
|
|
|
|
|
using ESRI.ArcGIS.Geodatabase;
|
|
|
|
|
using KGIS.Framework.Utils;
|
|
|
|
|
using Kingo.Plugin.EngineEditor.Common;
|
|
|
|
|
using KGIS.Framework.Utils.Helper;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
using System.Windows.Controls;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
using System.Windows.Interop;
|
|
|
|
|
using System.Windows.Media;
|
|
|
|
|
using System.Windows.Media.Imaging;
|
|
|
|
|
|
|
|
|
|
namespace Kingo.Plugin.EngineEditor.Views
|
|
|
|
|
{
|
|
|
|
|
public delegate void FeatureSelectEventHandler();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// FrmFeatureSelected.xaml 的交互逻辑
|
|
|
|
|
/// </summary>
|
|
|
|
|
public partial class FrmFeatureSelected : Window
|
|
|
|
|
{
|
|
|
|
|
public int OID;
|
|
|
|
|
EngineEditorClass m_editor = null;
|
|
|
|
|
ISelectionSet pSelectionSet = null;
|
|
|
|
|
//List<int> listSelectObjectID;
|
|
|
|
|
List<Bitmap> listSelectBitmap;
|
|
|
|
|
ImageList imageListSmall = new ImageList();//产生图像对象
|
|
|
|
|
private IHookHelper M_hookHelper = new HookHelper();
|
|
|
|
|
ILayer layer = null;
|
|
|
|
|
IFeatureLayer pFeatureLayer = null;
|
|
|
|
|
public bool bReturn = false;
|
|
|
|
|
public event FeatureSelectEventHandler featureHandler;
|
|
|
|
|
IGeoFeatureLayer GeoFeatureLayer;
|
|
|
|
|
IQueryFilter queryFilter = null;
|
|
|
|
|
IFeatureCursor pFeatureCursor = null;
|
|
|
|
|
IDictionary<int, string> pOid_DLBM = new Dictionary<int, string>();
|
|
|
|
|
IFeature pFeature = null;
|
|
|
|
|
BitmapScaleHelper pBitmapHelper = new BitmapScaleHelper();
|
|
|
|
|
public FrmFeatureSelected()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
bReturn = true;
|
|
|
|
|
if (m_editor == null)
|
|
|
|
|
{
|
|
|
|
|
m_editor = new EngineEditorClass();
|
|
|
|
|
}
|
|
|
|
|
Init();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Edit Tool 左键 "数据切换"
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="m_hookHelper"></param>
|
|
|
|
|
/// <param name="item"></param>
|
|
|
|
|
public FrmFeatureSelected(IHookHelper m_hookHelper, List<int> item)
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Init();
|
|
|
|
|
bReturn = true;
|
|
|
|
|
Bitmap bitmap = null;
|
|
|
|
|
int[] selected = new int[1];
|
|
|
|
|
if (m_editor == null)
|
|
|
|
|
{
|
|
|
|
|
m_editor = new EngineEditorClass();
|
|
|
|
|
}
|
|
|
|
|
this.Title = m_editor.TargetLayer.Name;
|
|
|
|
|
//取消当前列名
|
|
|
|
|
//this.nameFine.Header = Title;
|
|
|
|
|
M_hookHelper = m_hookHelper;
|
|
|
|
|
//this.listView1.View = item;
|
|
|
|
|
string where = null;
|
|
|
|
|
for (int i = 0; i < item.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
//this.listView1.Items.Add(item[i]);
|
|
|
|
|
where += " OBJECTID=" + item[i] + " or";
|
|
|
|
|
}
|
|
|
|
|
layer = m_editor.TargetLayer;
|
|
|
|
|
pFeatureLayer = layer as IFeatureLayer;
|
|
|
|
|
pSelectionSet = (pFeatureLayer as IFeatureSelection).SelectionSet;
|
|
|
|
|
IEnumIDs enumIDs = pSelectionSet.IDs;
|
|
|
|
|
enumIDs.Reset();
|
|
|
|
|
int objectid = enumIDs.Next();
|
|
|
|
|
if (objectid > 0)
|
|
|
|
|
{
|
|
|
|
|
where = where.Substring(0, where.Length - 2);
|
|
|
|
|
queryFilter.WhereClause = where;
|
|
|
|
|
|
|
|
|
|
GeoFeatureLayer = layer as IGeoFeatureLayer;
|
|
|
|
|
pFeatureCursor = pFeatureLayer.Search(queryFilter, true);
|
|
|
|
|
if (!GetDLBMByOid(item.ToArray()))
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("要素转换器打开异常:GetDLBMByOid方法获取地类图斑失败");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
IDictionary<string, ISymbol> pDic = GetSymbol(GeoFeatureLayer, pFeatureCursor);
|
|
|
|
|
#region 注释
|
|
|
|
|
//方法1 缺点,存在相同的图斑报错,原因pDic是主键,不存相同图斑
|
|
|
|
|
//foreach (KeyValuePair<string, ISymbol> item1 in pDic)
|
|
|
|
|
//{
|
|
|
|
|
// bitmap = PreViewFillSymbol(item1.Value, 30, 30);
|
|
|
|
|
// selected[0] = 4;
|
|
|
|
|
// bitmap = PhotoScreenShot(bitmap, 3, 3, selected)[0];
|
|
|
|
|
// imageListSmall.Images.Add(bitmap);
|
|
|
|
|
//}
|
|
|
|
|
//for (int i = 0; i < item.Count; i++)
|
|
|
|
|
//{
|
|
|
|
|
// this.listView1.Items.Add(new FeatureConversion(item[i], (Bitmap)imageListSmall.Images[imageListSmall.Images.Count - i - 1]));
|
|
|
|
|
// if (item[i].ToString() == objectid.ToString())
|
|
|
|
|
// {
|
|
|
|
|
// this.listView1.SelectedIndex = i;
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
//
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
//方法2
|
|
|
|
|
foreach (KeyValuePair<int, string> pair in pOid_DLBM)
|
|
|
|
|
{
|
|
|
|
|
if (bitmap != null)
|
|
|
|
|
{
|
|
|
|
|
bitmap.Dispose();
|
|
|
|
|
bitmap = null;
|
|
|
|
|
}
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(pair.Value) && pDic.ContainsKey(pair.Value))
|
|
|
|
|
{
|
|
|
|
|
bitmap = pBitmapHelper.PreViewFillSymbol(pDic[pair.Value], 30, 30);
|
|
|
|
|
selected[0] = 4;
|
|
|
|
|
bitmap = pBitmapHelper.PhotoScreenShot(bitmap, 3, 3, selected)[0];
|
|
|
|
|
}
|
|
|
|
|
if (bitmap == null)
|
|
|
|
|
{
|
|
|
|
|
bitmap = new Bitmap(10, 10);
|
|
|
|
|
}
|
|
|
|
|
this.listView1.Items.Add(new FeatureConversion(pair.Key, bitmap));
|
|
|
|
|
if (pair.Key == objectid)
|
|
|
|
|
{
|
|
|
|
|
this.listView1.SelectedIndex = this.listView1.Items.Count - 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("要素转换器打开异常:" + ex);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (pFeature != null)
|
|
|
|
|
{
|
|
|
|
|
Marshal.ReleaseComObject(pFeature);
|
|
|
|
|
}
|
|
|
|
|
if (pFeatureCursor != null)
|
|
|
|
|
{
|
|
|
|
|
Marshal.ReleaseComObject(pFeatureCursor);
|
|
|
|
|
}
|
|
|
|
|
GC.Collect();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public FrmFeatureSelected(IHookHelper m_hookHelper, Dictionary<string, List<int>> keyValuePairs)
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Init();
|
|
|
|
|
bReturn = true;
|
|
|
|
|
Bitmap bitmap = null;
|
|
|
|
|
if (m_editor == null)
|
|
|
|
|
m_editor = new EngineEditorClass();
|
|
|
|
|
M_hookHelper = m_hookHelper;
|
|
|
|
|
this.listView1.Items.Clear();
|
|
|
|
|
foreach (var item in keyValuePairs)
|
|
|
|
|
{
|
|
|
|
|
foreach (var itemOIDs in item.Value)
|
|
|
|
|
{
|
|
|
|
|
if (bitmap == null)
|
|
|
|
|
bitmap = new Bitmap(9, 9);
|
|
|
|
|
this.listView1.Items.Add(new FeatureConversion(item.Key, itemOIDs, bitmap));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("要素转换器打开异常:" + ex);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (pFeature != null)
|
|
|
|
|
{
|
|
|
|
|
Marshal.ReleaseComObject(pFeature);
|
|
|
|
|
}
|
|
|
|
|
if (pFeatureCursor != null)
|
|
|
|
|
{
|
|
|
|
|
Marshal.ReleaseComObject(pFeatureCursor);
|
|
|
|
|
}
|
|
|
|
|
GC.Collect();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private IDictionary<string, ISymbol> GetSymbol(IGeoFeatureLayer pGeoFeatureLayer, IFeatureCursor pFeatureCursor)
|
|
|
|
|
{
|
|
|
|
|
IDictionary<string, ISymbol> pDic = new Dictionary<string, ISymbol>();
|
|
|
|
|
LabelAPI.GetSymbolInfos(pGeoFeatureLayer.Renderer, pFeatureCursor, pDic);
|
|
|
|
|
|
|
|
|
|
return pDic;
|
|
|
|
|
}
|
|
|
|
|
private void Init()
|
|
|
|
|
{
|
|
|
|
|
//是否展示“识别列表”
|
|
|
|
|
this.staPanel.Visibility = Visibility.Collapsed;
|
|
|
|
|
this.featureHandler += new FeatureSelectEventHandler(SelectChange);
|
|
|
|
|
if (listSelectBitmap == null)
|
|
|
|
|
{
|
|
|
|
|
listSelectBitmap = new List<Bitmap>();
|
|
|
|
|
}
|
|
|
|
|
if (queryFilter == null)
|
|
|
|
|
{
|
|
|
|
|
queryFilter = new QueryFilterClass();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void listView1_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
//SelectChange();
|
|
|
|
|
if (featureHandler != null)
|
|
|
|
|
{
|
|
|
|
|
featureHandler();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据OID获得DLBM
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="item">oid数组</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public bool GetDLBMByOid(int[] item)
|
|
|
|
|
{
|
|
|
|
|
pOid_DLBM.Clear();
|
|
|
|
|
string DLBM = null;
|
|
|
|
|
if (pFeatureLayer == null)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
|
|
|
|
|
for (int i = 0; i < item.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
pFeature = pFeatureClass.GetFeature(item[i]);
|
|
|
|
|
for (int j = 0; j < pFeature.Fields.FieldCount; j++)
|
|
|
|
|
{
|
|
|
|
|
IField field = pFeature.Fields.get_Field(j);
|
|
|
|
|
if (field.Name.ToUpper() != "DLBM" || field.AliasName != "地类编码")
|
|
|
|
|
continue;
|
|
|
|
|
if (pFeature.get_Value(j) is DBNull || pFeature.get_Value(j) == null)
|
|
|
|
|
{
|
|
|
|
|
DLBM = null;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
DLBM = pFeature.get_Value(j).ToString().Trim();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
pOid_DLBM.Add(item[i], DLBM);
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
public void SelectChange(bool IsTest)
|
|
|
|
|
{
|
|
|
|
|
//先清除地图上所有选中要素,但目标图用来选中查询的图层选中图形不清除
|
|
|
|
|
ESRI.ArcGIS.Geometry.IGeometry gg = (m_editor as IEngineEditSketch).Geometry;
|
|
|
|
|
this.M_hookHelper.FocusMap.ClearSelection();
|
|
|
|
|
//获取用户选择的OBJECTID
|
|
|
|
|
FeatureConversion conversion = listView1.SelectedItem as FeatureConversion;
|
|
|
|
|
OID = conversion.OBJECTID;
|
|
|
|
|
//OID = listView1.SelectedItem;
|
|
|
|
|
pSelectionSet = (pFeatureLayer as IFeatureSelection).SelectionSet;
|
|
|
|
|
|
|
|
|
|
IFeatureClass pFeatureclass = pFeatureLayer.FeatureClass;
|
|
|
|
|
IQueryFilter pQuery = new QueryFilterClass();
|
|
|
|
|
pQuery.WhereClause = "OBJECTID=" + OID + "";
|
|
|
|
|
IFeatureCursor cursor = pFeatureclass.Search(pQuery, true);
|
|
|
|
|
IFeature pFeature = cursor.NextFeature();
|
|
|
|
|
if (pFeature != null)
|
|
|
|
|
{
|
|
|
|
|
(M_hookHelper.Hook as IMapControlDefault).Map.SelectFeature((pFeatureLayer as ILayer), pFeature);
|
|
|
|
|
//KGIS.Common.Utility.CommonAPI.MoveToCenterBySelectFeature(M_hookHelper.Hook as IMapControlDefault, (pFeatureLayer as ILayer), pFeature);
|
|
|
|
|
}
|
|
|
|
|
this.M_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, M_hookHelper.ActiveView.Extent);
|
|
|
|
|
//-------------------------------------
|
|
|
|
|
#region
|
|
|
|
|
//if (listSelectObjectID == null)
|
|
|
|
|
//{
|
|
|
|
|
// listSelectObjectID = new List<int>();
|
|
|
|
|
//}
|
|
|
|
|
//清除选集
|
|
|
|
|
//pSelectionSet.RemoveList(pSelectionSet.Count, ref listSelectObjectID.ToArray()[0]);
|
|
|
|
|
//listSelectObjectID.Clear();
|
|
|
|
|
//listSelectObjectID.Add(OID);
|
|
|
|
|
//先清除地图上所有选中要素,但目标图用来选中查询的图层选中图形不清除
|
|
|
|
|
//pSelectionSet.AddList(listSelectObjectID.Count, ref listSelectObjectID.ToArray()[0]);
|
|
|
|
|
//M_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, M_hookHelper.ActiveView.Extent);
|
|
|
|
|
//this.M_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, M_hookHelper.ActiveView.Extent);
|
|
|
|
|
//IFeatureClass pFeatureclass = pFeatureLayer.FeatureClass;
|
|
|
|
|
//IQueryFilter pQuery = new QueryFilterClass();
|
|
|
|
|
//pQuery.WhereClause = "OBJECTID=" + OID + "";
|
|
|
|
|
//IFeatureCursor cursor = pFeatureclass.Search(pQuery, true);
|
|
|
|
|
//IFeature pFeature = cursor.NextFeature();
|
|
|
|
|
//if (pFeature != null)
|
|
|
|
|
//{
|
|
|
|
|
// (m_editor as IEngineEditSketch).Geometry = pFeature.Shape;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//IFeatureSelection pFeatureSele = M_hookHelper.ActiveView.FocusMap.FeatureSelection as IFeatureSelection;
|
|
|
|
|
//if (pFeatureSele != null)
|
|
|
|
|
//{
|
|
|
|
|
// pFeatureSele.Add();
|
|
|
|
|
//}
|
|
|
|
|
//IEnumFeature pEnumFeature1 = (M_hookHelper.ActiveView.FocusMap.FeatureSelection) as IEnumFeature;
|
|
|
|
|
//IEnumFeature pEnumFeature = (pSelectionSet as IFeatureSelection) as IEnumFeature;
|
|
|
|
|
//IFeature pFeature = pEnumFeature1.Next();
|
|
|
|
|
//if(pFeature!=null)
|
|
|
|
|
//{
|
|
|
|
|
// (m_editor as IEngineEditSketch).Geometry = pFeature.ShapeCopy;
|
|
|
|
|
//}
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
public void SelectChange()
|
|
|
|
|
{
|
|
|
|
|
//先清除地图上所有选中要素,但目标图用来选中查询的图层选中图形不清除
|
|
|
|
|
ESRI.ArcGIS.Geometry.IGeometry gg = (m_editor as IEngineEditSketch).Geometry;
|
|
|
|
|
this.M_hookHelper.FocusMap.ClearSelection();
|
|
|
|
|
//获取用户选择的OBJECTID
|
|
|
|
|
FeatureConversion conversion = listView1.SelectedItem as FeatureConversion;
|
|
|
|
|
OID = conversion.OBJECTID;
|
|
|
|
|
pFeatureLayer = KGIS.Framework.Maps.MapsManager.Instance.MapService.GetFeatureLayerByName(conversion.LayerNameByOID);
|
|
|
|
|
IQueryFilter pQuery = new QueryFilterClass
|
|
|
|
|
{
|
|
|
|
|
WhereClause = "OBJECTID=" + OID + ""
|
|
|
|
|
};
|
|
|
|
|
IFeatureCursor cursor = pFeatureLayer.FeatureClass.Search(pQuery, true);
|
|
|
|
|
IFeature pFeature = cursor.NextFeature();
|
|
|
|
|
if (pFeature != null)
|
|
|
|
|
{
|
|
|
|
|
(M_hookHelper.Hook as IMapControlDefault).Map.SelectFeature((pFeatureLayer as ILayer), pFeature);
|
|
|
|
|
}
|
|
|
|
|
this.M_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, M_hookHelper.ActiveView.Extent);
|
|
|
|
|
}
|
|
|
|
|
private void form_closed(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
//this.DialogResult = true;
|
|
|
|
|
GC.Collect();
|
|
|
|
|
this.Close();
|
|
|
|
|
bReturn = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void listView1_MouseDown(object sender, MouseButtonEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (e.LeftButton == MouseButtonState.Pressed)
|
|
|
|
|
{
|
|
|
|
|
if (featureHandler != null)
|
|
|
|
|
{
|
|
|
|
|
featureHandler();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Button_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
int currentOid = listView1.SelectedIndex;
|
|
|
|
|
if (currentOid > -1 && currentOid < listView1.Items.Count - 1)
|
|
|
|
|
{
|
|
|
|
|
++currentOid;
|
|
|
|
|
}
|
|
|
|
|
else if (currentOid == listView1.Items.Count - 1)
|
|
|
|
|
{
|
|
|
|
|
currentOid = 0;
|
|
|
|
|
}
|
|
|
|
|
listView1.SelectedIndex = currentOid;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Btnlist_Click(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.staPanel.Visibility == Visibility.Visible)
|
|
|
|
|
{
|
|
|
|
|
this.staPanel.Visibility = Visibility.Collapsed;
|
|
|
|
|
}
|
|
|
|
|
else if (this.staPanel.Visibility == Visibility.Collapsed)
|
|
|
|
|
{
|
|
|
|
|
this.staPanel.Visibility = Visibility.Visible;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool? ShowInMainForm(bool isModel = false)
|
|
|
|
|
{
|
|
|
|
|
this.ShowInTaskbar = false;
|
|
|
|
|
if (System.Windows.Application.Current != null)
|
|
|
|
|
{
|
|
|
|
|
this.Owner = System.Windows.Application.Current.MainWindow;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
WindowInteropHelper helper = new WindowInteropHelper(this);
|
|
|
|
|
helper.Owner = ExtensionShowWindow.MainWinForm.Handle;
|
|
|
|
|
System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(this);
|
|
|
|
|
}
|
|
|
|
|
if (isModel)
|
|
|
|
|
{
|
|
|
|
|
return this.ShowDialog();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
this.Show();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class FeatureConversion
|
|
|
|
|
{
|
|
|
|
|
private ImageSource img { get; set; }
|
|
|
|
|
private int objectid { get; set; }
|
|
|
|
|
private string layerNameByOID { get; set; }
|
|
|
|
|
public ImageSource IMG
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return img;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public int OBJECTID
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return objectid;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 对应的图层名字
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string LayerNameByOID
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return layerNameByOID;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
|
|
|
|
|
public static extern bool DeleteObject(IntPtr hObject);
|
|
|
|
|
|
|
|
|
|
public static ImageSource ChangeBitmapToImageSource(Bitmap bitmap)
|
|
|
|
|
{
|
|
|
|
|
IntPtr hBitmap = bitmap.GetHbitmap();
|
|
|
|
|
ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
|
|
|
|
|
hBitmap,
|
|
|
|
|
IntPtr.Zero,
|
|
|
|
|
Int32Rect.Empty,
|
|
|
|
|
BitmapSizeOptions.FromEmptyOptions());
|
|
|
|
|
|
|
|
|
|
if (!DeleteObject(hBitmap))
|
|
|
|
|
{
|
|
|
|
|
if (hBitmap != null)
|
|
|
|
|
{
|
|
|
|
|
Marshal.FreeCoTaskMem(hBitmap);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
throw new System.ComponentModel.Win32Exception();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return wpfBitmap;
|
|
|
|
|
}
|
|
|
|
|
public FeatureConversion(int oid, Bitmap img)
|
|
|
|
|
{
|
|
|
|
|
this.objectid = oid;
|
|
|
|
|
this.img = ChangeBitmapToImageSource(img);
|
|
|
|
|
}
|
|
|
|
|
public FeatureConversion(string layerNamebyOID, int oid, Bitmap img)
|
|
|
|
|
{
|
|
|
|
|
this.layerNameByOID = layerNamebyOID;
|
|
|
|
|
this.objectid = oid;
|
|
|
|
|
this.img = ChangeBitmapToImageSource(img);
|
|
|
|
|
}
|
|
|
|
|
public FeatureConversion(int oid, ImageSource img)
|
|
|
|
|
{
|
|
|
|
|
this.img = img;
|
|
|
|
|
this.objectid = oid;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|