You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

283 lines
9.3 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ComponentFactory.Krypton.Toolkit;
using ComponentFactory.Krypton.Navigator;
using ComponentFactory.Krypton.Workspace;
using ComponentFactory.Krypton.Docking;
using System.IO;
using System.Text.RegularExpressions;
using SigmaDrawerStyle;
namespace GeoSigmaViewer
{
public partial class FormViewer : Form
{
List<Viewer> viewers = new List<Viewer>();
List<LayerTree> layers = new List<LayerTree>();
Viewer viewer;// = new Viewer();
LayerTree layerTree;
PanelProperty panelProperty = new PanelProperty();
KryptonPage pageProperty = new KryptonPage();
int nViewCount = 0;
public FormViewer()
{
InitializeComponent();
}
private void FormViewer_Load(object sender, EventArgs e)
{
KryptonDockingWorkspace w = kryptonDockingManager.ManageWorkspace(kryptonDockableWorkspace);
kryptonDockingManager.ManageControl(kryptonPanel, w);
kryptonDockingManager.ManageFloating(this);
LoadPropertyPanel();
// OpenFile("c:\\temp\\钻探目标分布图2.dfd");
OpenFile("c:\\temp\\钻探目标分布图.dfd");
//OpenFile("c:\\temp\\self_a.dfd");
}
private void btnOpenFile_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if(ofd.ShowDialog()!=DialogResult.OK)
{
return;
}
OpenFile(ofd.FileName);
}
private void OpenFile(string fileName)
{
Viewer viewerCur = new Viewer();
if (viewerCur.OpenFile(fileName)==false)
{
return;
}
panelProperty.DrawViewer=viewerCur;
// Create new page with title and image
KryptonPage pageView = new KryptonPage();
pageView.Text="图形 "+(nViewCount+1);
pageView.TextTitle=pageView.Text;
pageView.TextDescription=pageView.Text;
pageView.UniqueName=viewerCur.ID+"";
pageView.ImageSmall=imageListSmall.Images[0];
// Add the control for display inside the page
viewerCur.Dock=DockStyle.Fill;
pageView.Controls.Add(viewerCur);
nViewCount++;
viewers.Add(viewerCur);
viewer=viewerCur;
for(int i = 0; i<layers.Count; i++)
{
kryptonDockingManager.RemovePage(layers[i].ID+"", false);
}
//TriStateTreeView tree = new TriStateTreeView();
//tree.ImageList=imlLayer;
LayerTree tree = new LayerTree();
tree.DrawViewer=viewer;
tree.LayerSelectedEvent+=layerTree_LayerSelect;
// Create new page with title and image
KryptonPage pageTree = new KryptonPage();
pageTree.Text="图层";
pageTree.TextTitle=pageTree.Text;
pageTree.TextDescription=pageTree.Text;
pageTree.UniqueName=tree.ID+"";
//p.ImageSmall=imageListSmall.Images[1];
// Add the control for display inside the page
tree.Dock=DockStyle.Fill;
pageTree.Controls.Add(tree);
layers.Add(tree);
layerTree=tree;
// Add docking pages
kryptonDockingManager.AddDockspace("Control", DockingEdge.Left, new KryptonPage[] { pageTree });
kryptonDockingManager.AddToWorkspace("Workspace", new KryptonPage[] { pageView });
viewer.ActiveTool=DrawToolType.Default;
//viewer.Redraw();
string strLayers = viewer.GetLayers();
string strCurrentLayer = viewer.GetCurrentLayer();
layerTree.ResetLayers(strLayers);
layerTree.SetCurrentLayer(strCurrentLayer);
}
private void layerTree_LayerSelect(string layerName)
{
string strCurveData="";
string strPointData="";
viewer.GetLayerStyleData(layerName, ref strCurveData, ref strPointData);
//Console.WriteLine(strCurveData);
DrawerStyle drawerStyle = new DrawerStyle();
drawerStyle.DeserializeCurve(strCurveData);
drawerStyle.DeserializePoint(strPointData);
if (drawerStyle.CurveStyle!=null||drawerStyle.PontStyle != null)
{
panelProperty.CurrentStyle=drawerStyle;
}
else
{
panelProperty.CurrentStyle=null;
}
panelProperty.LayerName=layerName;
//MessageBox.Show(layerName);
}
private void LoadPropertyPanel()
{
if (kryptonDockingManager.FindPageElement(pageProperty.UniqueName)!=null)
{
return;
}
pageProperty.Text="属性";
pageProperty.TextTitle=pageProperty.Text;
pageProperty.TextDescription="属性管理";
pageProperty.UniqueName="图形属性";
pageProperty.ImageSmall=imageListSmall.Images[0];
// Add the control for display inside the page
panelProperty.Dock=DockStyle.Fill;
pageProperty.Controls.Add(panelProperty);
kryptonDockingManager.AddDockspace("Control", DockingEdge.Right, new KryptonPage[] { pageProperty });
}
/// <summary>
/// 放大
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnZoomIn_Click(object sender, EventArgs e)
{
viewer.ZoomIn();
}
private void btnZoomOut_Click(object sender, EventArgs e)
{
viewer.ZoomOut();
}
private void btnTestScroll_Click(object sender, EventArgs e)
{
viewer.Scroll2(400);
}
private void FormViewer_Resize(object sender, EventArgs e)
{
if (viewer==null) return;
viewer.ReDrawWindow();
}
private void tsbViewAll_Click(object sender, EventArgs e)
{
viewer.ViewAll();
}
/// <summary>
/// 恢复缺省状态
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tsbToolDefault_Click(object sender, EventArgs e)
{
viewer.ActiveTool=DrawToolType.Default;
}
private void tsbPan_Click(object sender, EventArgs e)
{
viewer.ActiveTool=DrawToolType.ViewPan;
}
private void tsbViewWindow_Click(object sender, EventArgs e)
{
viewer.ActiveTool=DrawToolType.ViewWindow;
}
private void tsbSelect_Click(object sender, EventArgs e)
{
viewer.ActiveTool=DrawToolType.Select;
}
private void tsbPointAdd_Click(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.Point;
}
private void tsbCurveAdd_Click(object sender, EventArgs e)
{
//viewer.
//this.ContextMenuStrip = this.contextMenuStrip1;
viewer.ActiveTool = DrawToolType.Curve;
}
private void tsbProportionAdd_Click(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.Proportion;
}
private void rectangularCSGridButton_Click(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.RectangularCSGrid;
}
private void drawRectangleButton_Click(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.Rectangle;
}
private void drawEllipseButton_ButtonClick(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.Ellipse;
}
private void drawArcButton_Click(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.Arc;
}
private void drawChordButton_Click(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.Chord;
}
private void drawPieButton_Click(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.Pie;
}
private void drawEquilateralButton_Click(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.Equilateral;
}
private void drawTextButton_Click(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.Text;
}
private void breakDirectButton_Click(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.BreakDirect;
}
private void breakCurveButton_Click(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.Break;
}
private void deleteNormalButton_Click(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.Delete;
}
private void deleteInButton_Click(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.DeleteIn;
}
private void deleteOutButton_Click(object sender, EventArgs e)
{
viewer.ActiveTool = DrawToolType.DeleteOut;
}
}
}