GisDevelop_Exp/GisDevelop_Exp/OptionsWindow.xaml.cs
2024-12-04 23:17:14 +08:00

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;
}
}
}