561 lines
21 KiB
C#
561 lines
21 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Shapes;
|
|
using Esri.ArcGISRuntime.Geometry;
|
|
using Esri.ArcGISRuntime.Symbology;
|
|
using WinRT;
|
|
|
|
namespace GisDevelop_Exp
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for OptionsWindow.xaml
|
|
/// </summary>
|
|
public partial class OptionsWindow : Window
|
|
{
|
|
private SimpleMarkerSymbol pointSymbol;
|
|
private System.Drawing.Color pointColor;
|
|
private double pointSize;
|
|
private SimpleMarkerSymbolStyle pointStyle;
|
|
|
|
private SimpleLineSymbol lineSymbol;
|
|
private System.Drawing.Color lineColor;
|
|
private double lineSize;
|
|
private SimpleLineSymbolStyle lineStyle;
|
|
|
|
private SimpleFillSymbol fillSymbol;
|
|
private SimpleLineSymbol outlineSymbol;
|
|
|
|
private System.Drawing.Color fillColor;
|
|
private SimpleFillSymbolStyle fillStyle;
|
|
|
|
private System.Drawing.Color outlineColor;
|
|
private SimpleLineSymbolStyle outlineStyle;
|
|
private double outlineSize;
|
|
|
|
private GeometryType geometryType;
|
|
|
|
public OptionsWindow()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
public GeometryType GeometryType
|
|
{
|
|
get { return geometryType; }
|
|
set { geometryType = value; }
|
|
}
|
|
|
|
public SimpleMarkerSymbol PointSymbol
|
|
{
|
|
get { return pointSymbol; }
|
|
set { pointSymbol = value; }
|
|
}
|
|
|
|
public SimpleLineSymbol LineSymbol
|
|
{
|
|
get { return lineSymbol; }
|
|
set { lineSymbol = value; }
|
|
}
|
|
|
|
public SimpleFillSymbol FillSymbol
|
|
{
|
|
get { return fillSymbol; }
|
|
set { fillSymbol = value; }
|
|
}
|
|
|
|
private void Window_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
if (pointSymbol != null)
|
|
{
|
|
pointColor=pointSymbol.Color;
|
|
pointStyle=pointSymbol.Style;
|
|
pointSize=pointSymbol.Size;
|
|
}
|
|
|
|
if (lineSymbol != null)
|
|
{
|
|
lineColor=lineSymbol.Color;
|
|
lineStyle=lineSymbol.Style;
|
|
lineSize=lineSymbol.Width;
|
|
}
|
|
|
|
if (fillSymbol != null)
|
|
{
|
|
fillColor = fillSymbol.Color;
|
|
fillStyle = fillSymbol.Style;
|
|
|
|
if (fillSymbol.Outline != null)
|
|
{
|
|
outlineSymbol=(SimpleLineSymbol)fillSymbol.Outline;
|
|
outlineSize=outlineSymbol.Width;
|
|
outlineColor=outlineSymbol.Color;
|
|
outlineStyle=outlineSymbol.Style;
|
|
if (outlineSymbol.Style == SimpleLineSymbolStyle.Null)
|
|
{
|
|
Checkbox_Border.IsChecked = false;
|
|
}
|
|
else
|
|
{
|
|
Checkbox_Border.IsChecked = true;
|
|
}
|
|
Checkbox_Border.Visibility = Visibility.Visible;
|
|
}
|
|
else
|
|
{
|
|
outlineSymbol = null;
|
|
Checkbox_Border.IsChecked = false;
|
|
Checkbox_Border.Visibility = Visibility.Collapsed;
|
|
}
|
|
}
|
|
|
|
if (geometryType == GeometryType.Point)
|
|
{
|
|
Point_Tab.IsSelected = true;
|
|
Point_Tab.Visibility = Visibility.Visible;
|
|
Line_Tab.Visibility = Visibility.Collapsed;
|
|
Polygon_Tab.Visibility = Visibility.Collapsed;
|
|
}else if (geometryType == GeometryType.Polyline)
|
|
{
|
|
Line_Tab.IsSelected = true;
|
|
Point_Tab.Visibility = Visibility.Collapsed;
|
|
Line_Tab.Visibility = Visibility.Visible;
|
|
Polygon_Tab.Visibility = Visibility.Collapsed;
|
|
}else if (geometryType == GeometryType.Polygon)
|
|
{
|
|
Polygon_Tab.IsSelected = true;
|
|
Point_Tab.Visibility = Visibility.Collapsed;
|
|
Line_Tab.Visibility = Visibility.Collapsed;
|
|
Polygon_Tab.Visibility = Visibility.Visible;
|
|
}
|
|
}
|
|
|
|
private void Point_Tab_OnLoaded(object sender, RoutedEventArgs e)
|
|
{
|
|
switch (pointStyle)
|
|
{
|
|
case SimpleMarkerSymbolStyle.Circle:
|
|
Radio_Point_Circle.IsChecked = true;
|
|
break;
|
|
case SimpleMarkerSymbolStyle.Cross:
|
|
Radio_Point_Cross.IsChecked = true;
|
|
break;
|
|
case SimpleMarkerSymbolStyle.Diamond:
|
|
Radio_Point_Diamond.IsChecked = true;
|
|
break;
|
|
case SimpleMarkerSymbolStyle.Square:
|
|
Radio_Point_Square.IsChecked = true;
|
|
break;
|
|
case SimpleMarkerSymbolStyle.Triangle:
|
|
Radio_Point_Triangle.IsChecked = true;
|
|
break;
|
|
case SimpleMarkerSymbolStyle.X:
|
|
Radio_Point_X.IsChecked = true;
|
|
break;
|
|
}
|
|
Slider_Point_Size.Value=pointSize;
|
|
System.Windows.Media.Color color = System.Windows.Media.Color.FromArgb(pointColor.A, pointColor.R, pointColor.G, pointColor.B);
|
|
Label_Color.Background = new SolidColorBrush(color);
|
|
int v = Convert.ToInt32(Slider_Point_Size.Value);
|
|
Label_Point_Size.Content = "大小:" + v.ToString();
|
|
}
|
|
|
|
private void Radio_Point_Circle_OnChecked(object sender, RoutedEventArgs e)
|
|
{
|
|
pointStyle = SimpleMarkerSymbolStyle.Circle;
|
|
}
|
|
|
|
private void Radio_Point_Cross_OnChecked(object sender, RoutedEventArgs e)
|
|
{
|
|
pointStyle = SimpleMarkerSymbolStyle.Cross;
|
|
}
|
|
|
|
|
|
private void Radio_Point_Diamond_OnChecked(object sender, RoutedEventArgs e)
|
|
{
|
|
pointStyle = SimpleMarkerSymbolStyle.Diamond;
|
|
}
|
|
|
|
|
|
private void Radio_Point_Square_OnChecked(object sender, RoutedEventArgs e)
|
|
{
|
|
pointStyle = SimpleMarkerSymbolStyle.Square;
|
|
}
|
|
|
|
|
|
private void Radio_Point_X_OnChecked(object sender, RoutedEventArgs e)
|
|
{
|
|
pointStyle = SimpleMarkerSymbolStyle.X;
|
|
}
|
|
|
|
|
|
private void Radio_Point_Triangle_OnChecked(object sender, RoutedEventArgs e)
|
|
{
|
|
pointStyle = SimpleMarkerSymbolStyle.Triangle;
|
|
}
|
|
|
|
|
|
private void Slider_Point_Size_OnValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
|
{
|
|
double v = e.NewValue;
|
|
Label_Point_Size.Content = "大小:"+v.ToString();
|
|
pointSize = v;
|
|
}
|
|
|
|
|
|
private void Control_OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
|
|
{
|
|
System.Windows.Forms.ColorDialog colorDialog = new System.Windows.Forms.ColorDialog();
|
|
SolidColorBrush colorBrush = (SolidColorBrush)Label_Color.Background;
|
|
colorDialog.Color = System.Drawing.Color.FromArgb(colorBrush.Color.A, colorBrush.Color.R, colorBrush.Color.G, colorBrush.Color.B);
|
|
if (colorDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
|
{
|
|
pointColor = colorDialog.Color;
|
|
System.Windows.Media.Color color = System.Windows.Media.Color.FromArgb(pointColor.A, pointColor.R, pointColor.G, pointColor.B);
|
|
Label_Color.Background = new SolidColorBrush(color);
|
|
}
|
|
}
|
|
|
|
|
|
private void Btn_Point_Confirm_OnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
PointSymbol.Color = pointColor;
|
|
PointSymbol.Style = pointStyle;
|
|
PointSymbol.Size = pointSize;
|
|
this.DialogResult = true;
|
|
}
|
|
|
|
|
|
private void Btn_Point_Apply_OnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
PointSymbol.Color = pointColor;
|
|
PointSymbol.Style = pointStyle;
|
|
PointSymbol.Size = pointSize;
|
|
}
|
|
|
|
|
|
private void Btn_Point_Cancel_OnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
this.DialogResult = false;
|
|
}
|
|
|
|
private void FrameworkElement_OnLoaded(object sender, RoutedEventArgs e)
|
|
{
|
|
if (GeometryType != GeometryType.Polyline)
|
|
{
|
|
return;
|
|
}
|
|
System.Windows.Media.Color color = System.Windows.Media.Color.FromArgb(lineColor.A, lineColor.R, lineColor.G, lineColor.B);
|
|
Label_Line_Color.Background = new SolidColorBrush(color);
|
|
Slider_Line_Width.Value = Convert.ToInt32(lineSymbol.Width);
|
|
switch (lineStyle)
|
|
{
|
|
case SimpleLineSymbolStyle.Solid:
|
|
ComboBox_Line_Style.SelectedIndex = 0;
|
|
break;
|
|
case SimpleLineSymbolStyle.Dash:
|
|
ComboBox_Line_Style.SelectedIndex = 1;
|
|
break;
|
|
case SimpleLineSymbolStyle.Dot:
|
|
ComboBox_Line_Style.SelectedIndex = 2;
|
|
break;
|
|
case SimpleLineSymbolStyle.DashDot:
|
|
ComboBox_Line_Style.SelectedIndex = 3;
|
|
break;
|
|
case SimpleLineSymbolStyle.DashDotDot:
|
|
ComboBox_Line_Style.SelectedIndex = 4;
|
|
break;
|
|
case SimpleLineSymbolStyle.Null:
|
|
ComboBox_Line_Style.SelectedIndex = 0;
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void Slider_Line_Width_OnValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
|
{
|
|
Label_Line_Width.Content="宽度:"+e.NewValue.ToString();
|
|
lineSize = e.NewValue;
|
|
}
|
|
|
|
private void UIElement_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
|
{
|
|
System.Windows.Forms.ColorDialog colorDialog = new System.Windows.Forms.ColorDialog();
|
|
SolidColorBrush colorBrush = (SolidColorBrush)Label_Line_Color.Background;
|
|
colorDialog.Color = System.Drawing.Color.FromArgb(colorBrush.Color.A, colorBrush.Color.R, colorBrush.Color.G, colorBrush.Color.B);
|
|
if (colorDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
|
{
|
|
lineColor = colorDialog.Color;
|
|
System.Windows.Media.Color color = System.Windows.Media.Color.FromArgb(pointColor.A, pointColor.R, pointColor.G, pointColor.B);
|
|
Label_Line_Color.Background = new SolidColorBrush(color);
|
|
}
|
|
}
|
|
|
|
private void Btn_Line_Confirm_OnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
LineSymbol.Style = lineStyle;
|
|
LineSymbol.Color = lineColor;
|
|
LineSymbol.Width = lineSize;
|
|
this.DialogResult = true;
|
|
}
|
|
|
|
private void Btn_Line_Apply_OnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
LineSymbol.Style = lineStyle;
|
|
LineSymbol.Color = lineColor;
|
|
LineSymbol.Width = lineSize;
|
|
}
|
|
|
|
private void Btn_Line_Cancel_OnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
this.DialogResult = false;
|
|
}
|
|
|
|
private void ComboBox_Line_Style_OnSelected(object sender, RoutedEventArgs e)
|
|
{
|
|
switch (ComboBox_Line_Style.SelectedIndex)
|
|
{
|
|
case 0:
|
|
lineStyle = SimpleLineSymbolStyle.Solid;
|
|
break;
|
|
case 1:
|
|
lineStyle = SimpleLineSymbolStyle.Dash;
|
|
break;
|
|
case 2:
|
|
lineStyle = SimpleLineSymbolStyle.Dot;
|
|
break;
|
|
case 3:
|
|
lineStyle = SimpleLineSymbolStyle.DashDot;
|
|
break;
|
|
case 4:
|
|
lineStyle = SimpleLineSymbolStyle.DashDotDot;
|
|
break;
|
|
case 5:
|
|
lineStyle = SimpleLineSymbolStyle.Null;
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void FrameworkElementPolygon_OnLoaded(object sender, RoutedEventArgs e)
|
|
{
|
|
switch (fillStyle)
|
|
{
|
|
case SimpleFillSymbolStyle.Solid:
|
|
ListBoxItem_Polygon_Solid.IsSelected = true;
|
|
break;
|
|
case SimpleFillSymbolStyle.Cross:
|
|
ListBoxItem_Polygon_Cross.IsSelected = true;
|
|
break;
|
|
case SimpleFillSymbolStyle.Horizontal:
|
|
ListBoxItem_Polygon_Horizontal.IsSelected = true;
|
|
break;
|
|
case SimpleFillSymbolStyle.Vertical:
|
|
ListBoxItem_Polygon_Vertical.IsSelected = true;
|
|
break;
|
|
case SimpleFillSymbolStyle.ForwardDiagonal:
|
|
ListBoxItem_Polygon_ForwardDiagonal.IsSelected = true;
|
|
break;
|
|
case SimpleFillSymbolStyle.BackwardDiagonal:
|
|
ListBoxItem_Polygon_BackwardDiagonal.IsSelected = true;
|
|
break;
|
|
case SimpleFillSymbolStyle.DiagonalCross:
|
|
ListBoxItem_Polygon_DiagonalCross.IsSelected = true;
|
|
break;
|
|
case SimpleFillSymbolStyle.Null:
|
|
ListBoxItem_Polygon_Null.IsSelected = true;
|
|
break;
|
|
}
|
|
|
|
switch (outlineStyle)
|
|
{
|
|
case SimpleLineSymbolStyle.Solid:
|
|
ComboBox_Border_Style.SelectedIndex = 0;
|
|
break;
|
|
case SimpleLineSymbolStyle.Dash:
|
|
ComboBox_Border_Style.SelectedIndex = 1;
|
|
break;
|
|
case SimpleLineSymbolStyle.Dot:
|
|
ComboBox_Border_Style.SelectedIndex = 2;
|
|
break;
|
|
case SimpleLineSymbolStyle.DashDot:
|
|
ComboBox_Border_Style.SelectedIndex = 3;
|
|
break;
|
|
case SimpleLineSymbolStyle.DashDotDot:
|
|
ComboBox_Border_Style.SelectedIndex = 4;
|
|
break;
|
|
case SimpleLineSymbolStyle.Null:
|
|
ComboBox_Border_Style.SelectedIndex = 5;
|
|
Checkbox_Border.IsChecked = false;
|
|
break;
|
|
}
|
|
|
|
TextBox_Border_Width.Text = outlineSize.ToString();
|
|
System.Windows.Media.Color borderColor = System.Windows.Media.Color.FromArgb(outlineColor.A, outlineColor.R, outlineColor.G, outlineColor.B);
|
|
Label_Border_Color.Background = new SolidColorBrush(borderColor);
|
|
System.Windows.Media.Color fillColor = System.Windows.Media.Color.FromArgb(this.fillColor.A, this.fillColor.R, this.fillColor.G, this.fillColor.B);
|
|
Label_Polygon_Color.Background = new SolidColorBrush(fillColor);
|
|
}
|
|
|
|
private void ChooseFillColor(object sender, MouseButtonEventArgs e)
|
|
{
|
|
System.Windows.Forms.ColorDialog colorDialog = new System.Windows.Forms.ColorDialog();
|
|
SolidColorBrush colorBrush = (SolidColorBrush)Label_Polygon_Color.Background;
|
|
colorDialog.Color = System.Drawing.Color.FromArgb(colorBrush.Color.A, colorBrush.Color.R, colorBrush.Color.G, colorBrush.Color.B);
|
|
if (colorDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
|
{
|
|
fillColor = colorDialog.Color;
|
|
System.Windows.Media.Color fillColorV = System.Windows.Media.Color.FromArgb(fillColor.A, fillColor.R, fillColor.G, fillColor.B);
|
|
Label_Polygon_Color.Background = new SolidColorBrush(fillColorV);
|
|
}
|
|
}
|
|
|
|
private void ChooseOutlineColor(object sender, MouseButtonEventArgs e)
|
|
{
|
|
System.Windows.Forms.ColorDialog colorDialog = new System.Windows.Forms.ColorDialog();
|
|
SolidColorBrush colorBrush = (SolidColorBrush)Label_Border_Color.Background;
|
|
colorDialog.Color = System.Drawing.Color.FromArgb(colorBrush.Color.A, colorBrush.Color.R, colorBrush.Color.G, colorBrush.Color.B);
|
|
if (colorDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
|
{
|
|
outlineColor = colorDialog.Color;
|
|
System.Windows.Media.Color outlineColorV = System.Windows.Media.Color.FromArgb(outlineColor.A, outlineColor.R, outlineColor.G, outlineColor.B);
|
|
Label_Border_Color.Background = new SolidColorBrush(outlineColorV);
|
|
}
|
|
}
|
|
|
|
private void Btn_Polygon_Apply_OnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
outlineSymbol.Style = outlineStyle;
|
|
outlineSymbol.Color = outlineColor;
|
|
outlineSymbol.Width = outlineSize;
|
|
fillSymbol.Style = fillStyle;
|
|
fillSymbol.Color = fillColor;
|
|
fillSymbol.Outline = outlineSymbol;
|
|
}
|
|
|
|
|
|
|
|
private void Btn_Polygon_Confirm_OnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
outlineSymbol.Style = outlineStyle;
|
|
outlineSymbol.Color = outlineColor;
|
|
outlineSymbol.Width = outlineSize;
|
|
fillSymbol.Style = fillStyle;
|
|
fillSymbol.Color = fillColor;
|
|
fillSymbol.Outline = outlineSymbol;
|
|
this.DialogResult = true;
|
|
}
|
|
|
|
private void Btn_Polygon_Cancel_OnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
this.DialogResult = false;
|
|
}
|
|
|
|
private void ComboBox_Border_Style_OnSelected(object sender, RoutedEventArgs e)
|
|
{
|
|
switch (ComboBox_Border_Style.SelectedIndex)
|
|
{
|
|
case 0:
|
|
outlineStyle = SimpleLineSymbolStyle.Solid;
|
|
break;
|
|
case 1:
|
|
outlineStyle = SimpleLineSymbolStyle.Dash;
|
|
break;
|
|
case 2:
|
|
outlineStyle = SimpleLineSymbolStyle.Dot;
|
|
break;
|
|
case 3:
|
|
outlineStyle = SimpleLineSymbolStyle.DashDot;
|
|
break;
|
|
case 4:
|
|
outlineStyle = SimpleLineSymbolStyle.DashDotDot;
|
|
break;
|
|
case 5:
|
|
outlineStyle = SimpleLineSymbolStyle.Null;
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void ListBox_Polygln_Fill_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
switch (ListBox_Polygln_Fill.SelectedIndex)
|
|
{
|
|
case 0:
|
|
fillStyle = SimpleFillSymbolStyle.Solid;
|
|
break;
|
|
case 1:
|
|
fillStyle = SimpleFillSymbolStyle.Horizontal;
|
|
break;
|
|
case 2:
|
|
fillStyle = SimpleFillSymbolStyle.Vertical;
|
|
break;
|
|
case 3:
|
|
fillStyle = SimpleFillSymbolStyle.Cross;
|
|
break;
|
|
case 4:
|
|
fillStyle = SimpleFillSymbolStyle.ForwardDiagonal;
|
|
break;
|
|
case 5:
|
|
fillStyle = SimpleFillSymbolStyle.BackwardDiagonal;
|
|
break;
|
|
case 6:
|
|
fillStyle = SimpleFillSymbolStyle.DiagonalCross;
|
|
break;
|
|
case 7:
|
|
fillStyle = SimpleFillSymbolStyle.Null;
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void TextBox_Border_Width_OnTextChanged(object sender, TextChangedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
outlineSize = Convert.ToInt32(TextBox_Border_Width.Text);
|
|
Console.WriteLine(outlineSize);
|
|
}
|
|
catch (FormatException fe)
|
|
{
|
|
MessageBox.Show(fe.Message);
|
|
}
|
|
}
|
|
|
|
private void Checkbox_Border_OnChecked(object sender, RoutedEventArgs e)
|
|
{
|
|
switch (ComboBox_Border_Style.SelectedIndex)
|
|
{
|
|
case 0:
|
|
outlineStyle = SimpleLineSymbolStyle.Solid;
|
|
break;
|
|
case 1:
|
|
outlineStyle = SimpleLineSymbolStyle.Dash;
|
|
break;
|
|
case 2:
|
|
outlineStyle = SimpleLineSymbolStyle.Dot;
|
|
break;
|
|
case 3:
|
|
outlineStyle = SimpleLineSymbolStyle.DashDot;
|
|
break;
|
|
case 4:
|
|
outlineStyle = SimpleLineSymbolStyle.DashDotDot;
|
|
break;
|
|
case 5:
|
|
outlineStyle = SimpleLineSymbolStyle.Null;
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void Checkbox_Border_OnUnchecked(object sender, RoutedEventArgs e)
|
|
{
|
|
outlineStyle = SimpleLineSymbolStyle.Null;
|
|
}
|
|
}
|
|
}
|