![](XDL_MapView6.files/image001.png)
Control Type
|
Header
|
Name
|
MenuItem
|
_Open XVcVector
|
openVectorFileMenuItem
|
|
|
|
|
Control Type
|
Header
|
Name
|
MenuItem
|
_Save
XvcVector
|
|
MenuItem
|
_Pixoneer
XVML
|
pixoneerXVMLFileMenuItem
|
MenuItem
|
_External
Vector Format
|
externalVectorFormatFileMenuItem
|
![](XDL_MapView6.files/image002.png)
Control Type
|
Header
|
Name
|
MenuItem
|
_Vector
|
|
MenuItem
|
_Point
|
pointVectorMenuItem
|
MenuItem
|
_Line
|
lineVectorMenuItem
|
MenuItem
|
_Ellipse
|
ellipseVectorMenuItem
|
MenuItem
|
_Rectangle
|
rectangleVectorMenuItem
|
MenuItem
|
_PlolyLine
|
polyLineVectorMenuItem
|
MenuItem
|
_Polygon
|
polygonVectorMenuItem
|
MenuItem
|
_Text
|
textVectorMenItem
|
MenuItem
|
_Text Box
|
textBoxVectorMenuItem
|
MenuItem
|
_Measure
|
|
MenuItem
|
_MeasurePoint
|
measurePointVectorMenuItem
|
MenuItem
|
_MeasureDistance
|
measureDistanceVectorMenuItem
|
MenuItem
|
_MeasureArea
|
measureAreaVectorMenuItem
|
MenuItem
|
_MeasureAngle
|
measureAngleVectorMenuItem
|
MenuItem
|
_Property
|
propertyVectorMenuItem
|
![](XDL_MapView6.files/image003.jpg)
![namespace XLD_MapView6_2
{
public partial class MainWindow : Window
{
public XRasterIO m_RasterIO; // ¿µ»óÀÇ ÀÔÃâ·ÂÀ» ´ã´çÇÒ °´Ã¼ ¼±¾ð
public XVectorIO m_VectorIO; //º¤ÅÍ °´Ã¼ÀÇ ÀÔÃâ·ÂÀ» ´ã´çÇÒ °´Ã¼ ¼±¾ð
public MainWindow()
{
¡¦](XDL_MapView6.files/image004.png)
1.4.2 ¼±¾ðºÎ¿¡
º¤ÅÍ °´Ã¼¸¦ Çڵ鸵Çϱâ À§ÇØ ¡°using Pixoneer.NXDL.NVC;¡±À» Ãß°¡ÇÏ°í »ý¼ºÀÚ¿¡ XMapLayerVectorEditor°´Ã¼¿¡
ÆíÁýÀÌ °¡´ÉÇϵµ·Ï Editable¼Ó¼ºÀ» trueÇ÷¡±×·Î
¼³Á¤ÇÏ°í, m_VectorIO°´Ã¼¸¦ »ý¼º ¹× ÃʱâÈ ½ÃŲ´Ù.
![using Pixoneer.NXDL; // ±âº» ÇÔ¼ö °ü·Ã ±â´É
using Pixoneer.NXDL.NCC; // ÁÂÇ¥ ½Ã½ºÅÛ °ü·Ã ±â´É
using Pixoneer.NXDL.NIO; // ÆÄÀÏ ÀÔÃâ·Â °ü·Ã ±â´É
using Pixoneer.NXDL.NRS; // Remote Sensing °ü·Ã ±â´É
using Pixoneer.NXDL.NGR; // Graphic°ü·Ã ±â´É
using Pixoneer.NXDL.NVC; // Vector °´Ã¼¿Í °ü·ÃµÈ ±â´É
using Pixoneer.NXDL.NXMap; // MapView °ü·Ã ±â´É
public MainWindow()
{
InitializeComponent();
String StrError;
m_RasterIO = new XRasterIO(); // °´Ã¼ »ý¼º
if (m_RasterIO.Initialize(out StrError) == false) // ¿µ»ó ÀÔÃâ·Â °´Ã¼ ÃʱâÈ
{
System.Windows.Forms.MessageBox.Show(StrError);
}
nxMapLayerComposite1.LayerVisible = true; // ¿µ»ó·¹À̾ º¸À̵µ·Ï ¼Ó¼ºÀ» º¯°æ
if (!nxMapView1.SetBackgroundMap("C:\\Pixoneer\\XDL1.2\\Config\\XMapBase.xml"))
{
System.Windows.MessageBox.Show("¹è°æ¸ÊÀÌ ¼³Á¤µÇÁö ¾Ê¾Ò½À´Ï´Ù.");
}
// º¤ÅÍ °´Ã¼¸¦ »ý¼ºÇÏ°í ÆíÁýÇϱâ À§ÇØ
nxMapLayerVectorEditor1.Editable = true;
// º¤Å͸¦ ÀúÀåÇϱâ À§ÇØ º¤ÅÍ IO°´Ã¼¸¦ »ý¼º
m_VectorIO = new XVectorIO();
if (m_VectorIO.Initialize(out StrError) == false)
MessageBox.Show(StrError);
}](XDL_MapView6.files/image005.png)
![// Vector °´Ã¼ ·Îµù
private void openXvcVectorFileMenuItem_Click(object sender, RoutedEventArgs e)
{
// ¿±âÀ§ÇÑ ÆÄÀÏ ´ÙÀ̾ó·Î±× â »ý¼º
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Multiselect = false;
openFileDialog.Filter = "XvcBase Files|*.xvml";
openFileDialog.RestoreDirectory = true;
Nullable<bool> result = openFileDialog.ShowDialog();
if (result != true) return;
// XvcBase°´Ã¼ »ý¼º(XvcObjectµéÀ» ´ã±â À§ÇÑ ÃÖ»óÀ§ °´Ã¼)
String strError;
XvcBase vcBase = new XvcBase();
// XvcBase°´Ã¼ ·Îµù
bool bres = vcBase.LoadFile(openFileDialog.FileName, out strError, null);
if (bres)
MessageBox.Show("Vector File Open Succeed", "Success",
MessageBoxButton.OK, MessageBoxImage.Information);
else
{
MessageBox.Show("Vector File Open Failed", "Fail",
MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
// ·ÎµùµÈ XvcBase°´Ã¼¸¦ XMapLayerVectorEditor°´Ã¼¿¡ ¼³Á¤ÇÏ¿© Àç ÆíÁýÀÌ
// °¡´ÉÇϵµ·Ï ¼³Á¤
nxMapLayerVectorEditor1.SetEditBase(vcBase);
}](XDL_MapView6.files/image006.png)
![// ³»ºÎ xml Æ÷¸ËÀÎ XVML ÆÄÀÏ·Î ÀúÀå
private void pixoneerXVMLFileMenuItem_Click(object sender, RoutedEventArgs e)
{
// XvcBase °´Ã¼ »ý¼º(XvcObjectµéÀ» ´ã±â À§ÇÑ ÃÖ»óÀ§ °´Ã¼)
Pixoneer.NXDL.NVC.XvcBase vcbase = nxMapLayerVectorEditor1.GetEditBase();
if (vcbase == null) return;
// ÀúÀå °æ·Î »ý¼ºÀ» À§ÇÑ Save ÆÄÀÏ ´ÙÀ̾ó·Î±× »ý¼º
SaveFileDialog dialog = new SaveFileDialog();
dialog.Title = "Save XvcBase File";
dialog.DefaultExt = "xvml";
dialog.Filter = "XvcBase Files|*.xvml";
Nullable<bool> result = dialog.ShowDialog();
if (result == true )
{
String strError;
// XvcBase¿¡ ÀúÀåµÈ °´Ã¼¸¦ ÆÄÀÏ·Î ÀúÀå
bool bres = vcbase.SaveFile(dialog.FileName, out strError, null);
if (bres)
MessageBox.Show("Vector File Save Succeed", "Success", MessageBoxButton.OK,
MessageBoxImage.Information);
else
MessageBox.Show("Vector File Save Failed", "Fail", MessageBoxButton.OK,
MessageBoxImage.Error);
}
}](XDL_MapView6.files/image007.png)
![// XDLÀÌ Áö¿øÇÏ´Â ¿ÜºÎ º¤ÅÍ °´Ã¼¸¦ ·Îµù
private void externalVectorFormatFileMenuItem_Click(object sender, RoutedEventArgs e)
{
// XMapLayerVectorEditor°´Ã¼¿¡ ÀÖ´Â XvcBase°´Ã¼¸¦ ²¨³»±â.
XvcBase vcbase = nxMapLayerVectorEditor1.GetEditBase();
if (vcbase == null) return;
// XDLÀÌ Áö¿øÇÏ´Â File filter ²¨³»±â
String fileFilters = m_VectorIO.GetFiltersForSave();
// ¿ÜºÎ ÆÄÀÏ·Î ÀúÀåÇϱâ À§ÇØ ÀúÀå ´ÙÀ̾ó·Î±× »ý¼º
SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = fileFilters;
Nullable<bool> result = dialog.ShowDialog();
if (result == true)
{
String vectorFileName = dialog.FileName;
String VectorFileKey = ExtractFilterKey(fileFilters,
dialog.FilterIndex - 1);
String strError;
// º¤Å͸¦ ¿ÜºÎ ÆÄÀÏ·Î ÀúÀå.
bool bres = m_VectorIO.Export(ref vcbase, dialog.FileName, VectorFileKey,
out strError, null);
if (bres)
MessageBox.Show("Vector File Save Succeed", "Success", MessageBoxButton.OK, MessageBoxImage.Information);
else
MessageBox.Show("Vector File Save Failed", "Fail", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private String ExtractFilterKey(String strFilter, int idx)
{
int tempidx = 0;
String strKey = "";
do
{
int idxDelim = strFilter.IndexOf(";|");
if (idxDelim != -1)
{
String strKeyTemp = strFilter.Substring(0, idxDelim).Trim();
int idxPipe = strKeyTemp.IndexOf('|');
if (idxPipe != -1)
{
strKey = strKeyTemp.Substring(0, idxPipe).Trim();
}
else
{
strKey = strKeyTemp;
}
strFilter = strFilter.Remove(0, idxDelim + 2);
tempidx++;
}
} while (tempidx <= idx);
return strKey;
}](XDL_MapView6.files/image008.png)
![private void pointVectorMenuItem_Click(object sender, RoutedEventArgs e)
{
nxMapLayerVectorEditor1.CreateNewOBJ(Pixoneer.NXDL.NVC.eXvcObjType.Point, null);
}
private void lineVectorMenuItem_Click(object sender, RoutedEventArgs e)
{
nxMapLayerVectorEditor1.CreateNewOBJ(Pixoneer.NXDL.NVC.eXvcObjType.Line, null);
}
private void ellipseVectorMenuItem_Click(object sender, RoutedEventArgs e)
{
nxMapLayerVectorEditor1.CreateNewOBJ(Pixoneer.NXDL.NVC.eXvcObjType.Ellipse, null);
}
private void rectangleVectorMenuItem_Click(object sender, RoutedEventArgs e)
{
nxMapLayerVectorEditor1.CreateNewOBJ(Pixoneer.NXDL.NVC.eXvcObjType.Rectangle, null);
}
private void polyLineVectorMenuItem_Click(object sender, RoutedEventArgs e)
{
nxMapLayerVectorEditor1.CreateNewOBJ(Pixoneer.NXDL.NVC.eXvcObjType.Polyline, null);
}
private void polygonVectorMenuItem_Click(object sender, RoutedEventArgs e)
{
nxMapLayerVectorEditor1.CreateNewOBJ(Pixoneer.NXDL.NVC.eXvcObjType.Polygon, null);
}
private void textVectorMenuItem_Click(object sender, RoutedEventArgs e)
{
nxMapLayerVectorEditor1.CreateNewOBJ(Pixoneer.NXDL.NVC.eXvcObjType.Text, null);
}
private void textBoxVectorMenuItem_Click(object sender, RoutedEventArgs e)
{
nxMapLayerVectorEditor1.CreateNewOBJ(Pixoneer.NXDL.NVC.eXvcObjType.Textbox, null);
}](XDL_MapView6.files/image009.png)
![private void measurePointVectorMenuItem_Click(object sender, RoutedEventArgs e)
{
nxMapLayerVectorEditor1.CreateNewOBJ(Pixoneer.NXDL.NVC.eXvcObjType.MeasurePoint, null);
}
private void measureDistanceVectorMenuItem_Click(object sender, RoutedEventArgs e)
{
nxMapLayerVectorEditor1.CreateNewOBJ(Pixoneer.NXDL.NVC.eXvcObjType.MeasureDist, null);
}
private void measureAreaVectorMenuItem_Click(object sender, RoutedEventArgs e)
{
nxMapLayerVectorEditor1.CreateNewOBJ(Pixoneer.NXDL.NVC.eXvcObjType.MeasureArea, null);
}
private void measureAngleVectorMenuItem_Click(object sender, RoutedEventArgs e)
{
nxMapLayerVectorEditor1.CreateNewOBJ(Pixoneer.NXDL.NVC.eXvcObjType.MeasureAngle, null);
}](XDL_MapView6.files/image010.png)
![private void propertyVectorMenuItem_Click(object sender, RoutedEventArgs e)
{
XvcObj Obj = nxMapLayerVectorEditor1.GetSelectedObj();
if (Obj == null) return;
ChangeProperty(Obj);
}
public void ChangeProperty(XvcObj Obj)
{
// ¼±ÅÃµÈ °´Ã¼°¡ nullÀÎ °æ¿ì´Â ½ÇÇàÇÏÁö ¾Ê´Â´Ù.
if (Obj == null) { return; }
eXvcObjType type = Obj.Type;
// Property âÀ» »ý¼ºÇÏ°í ±âÁ¸ ObjectÀÇ ¼Ó¼º°ªÀ» Propertyâ¿¡ ¼³Á¤ÇÑ´Ù.
PropertyXvcObj propertyDlg = new PropertyXvcObj();
propertyDlg.m_strObjType = type.ToString();
propertyDlg.m_nID = Obj.ID;
propertyDlg.m_strName = Obj.Name;
propertyDlg.m_crBack = Obj.ColorBack;
propertyDlg.m_crFore = Obj.ColorFore;
propertyDlg.m_crLine = Obj.ColorLine;
propertyDlg.m_crText = Obj.ColorText;
propertyDlg.m_dblThick = Obj.GetThick();
propertyDlg.m_StyleFill = Obj.StyleFill;
propertyDlg.m_StyleLine = Obj.StyleLine;
//propertyDlg.Show();
// Object Type¿¡ µû¶ó ¼Ó¼º°ªÀ» Propertyâ¿¡ ¼³Á¤ÇÑ´Ù.
if (type == eXvcObjType.Text)
{
propertyDlg.m_dblFontSize = ((XvcText)Obj).FontSize;
propertyDlg.m_strFontName = ((XvcText)Obj).FontName;
propertyDlg.m_bBold = ((XvcText)Obj).Bold;
propertyDlg.m_bUnderline = ((XvcText)Obj).Underline;
propertyDlg.m_bItalic = ((XvcText)Obj).Italic;
propertyDlg.m_bStrikeOut = ((XvcText)Obj).StrikeOut;
}
else if (type == eXvcObjType.Line)
{
propertyDlg.m_LineStartShape = ((XvcLine)Obj).StartShapeType;
propertyDlg.m_LineEndShape = ((XvcLine)Obj).EndShapeType;
}
// Object Type¿¡ µû¶ó ¼Ó¼º°ªÀ» Propertyâ¿¡ ¼³Á¤ÇÑ´Ù.
if((bool)propertyDlg.ShowDialog())
{
Obj.ID = propertyDlg.m_nID;
Obj.Name = propertyDlg.m_strName;
Obj.ColorBack = propertyDlg.m_crBack;
Obj.ColorFore = propertyDlg.m_crFore;
Obj.ColorLine = propertyDlg.m_crLine;
Obj.SetThick(propertyDlg.m_dblThick);
Obj.StyleFill = propertyDlg.m_StyleFill;
Obj.StyleLine = propertyDlg.m_StyleLine;
Obj.ColorText = propertyDlg.m_crText;
// Object°¡ ÅؽºÆ®Àΰæ¿ì Text°´Ã¼¿¡ Propertyâ¿¡¼ Á¤ÀÇÇÑ °ªÀ» ¼³Á¤ÇÑ´Ù.
if (type == eXvcObjType.Text)
{
XvcText text = (XvcText)Obj;
text.FontSize = propertyDlg.m_dblFontSize;
text.FontName = propertyDlg.m_strFontName;
text.Bold = propertyDlg.m_bBold;
text.Underline = propertyDlg.m_bUnderline;
text.Italic = propertyDlg.m_bItalic;
text.StrikeOut = propertyDlg.m_bStrikeOut;
}
// Object°¡ LineÀΰæ¿ì Line°´Ã¼¿¡ Propertyâ¿¡¼ Á¤ÀÇÇÑ °ªÀ» ¼³Á¤ÇÑ´Ù.
else if (type == eXvcObjType.Line)
{
((XvcLine)Obj).StartShapeType = propertyDlg.m_LineStartShape;
((XvcLine)Obj).EndShapeType = propertyDlg.m_LineEndShape;
}
this.nxMapView1.RefreshScreen();
}
}](XDL_MapView6.files/image011.png)
![](XDL_MapView6.files/image012.png)
»õ·Î¿î
Window¸¦ Ãß°¡ÇÏ·Á¸é, Visual StudioÀÇ
¸Þ´º [ÇÁ·ÎÁ§Æ®]-[ÆäÀÌÁö Ãß°¡]¸¦ ¼±ÅÃÇϰųª, [¼Ö·ç¼Ç Ž»ö±â]¿¡¼
ÇÁ·ÎÁ§Æ®¸¦ ¼±ÅÃÇÑ ÈÄ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» Ŭ¸¯ÇÏ¿© »ý¼ºµÇ´Â ¸Þ´º¿¡¼ [Ãß°¡]-[ÆäÀÌÁö]À» ¼±ÅÃÇÑ´Ù.
![](XDL_MapView6.files/image013.jpg)
ÆÄÀÏÀ̸§Àº ¡°PropertyXvcObj.xaml¡± À¸·Î Á¤ÀÇÇÑ´Ù.
![](XDL_MapView6.files/image014.jpg)
1.4.10
XAML âÀ» »ý¼ºÇÏ¿© Property âÀ»
µðÀÚÀÎÇÑ´Ù. Property â¿¡ ´ëÇÑ ÄÚµå´Â »ý·«ÇÑ´Ù. »ùÇÃÄڵ带
´Ù¿î·Îµå ÈÄ ÂüÁ¶ÇÑ´Ù.
![](XDL_MapView6.files/image015.png)
![](XDL_MapView6.files/image016.png)
![](XDL_MapView6.files/image017.png)
![](XDL_MapView6.files/image018.png)
|