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.
104 lines
4.0 KiB
C#
104 lines
4.0 KiB
C#
using Arction.Wpf.ChartingMVVM;
|
|
using Arction.Wpf.ChartingMVVM.Series3D;
|
|
using Arction.Wpf.ChartingMVVM.Views.View3D;
|
|
using Prism.Events;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
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.Navigation;
|
|
using System.Windows.Shapes;
|
|
using System.Windows.Threading;
|
|
using Txgy.EWS.Client.Common;
|
|
using Txgy.EWS.Client.Common.MessageEvents;
|
|
using Unity;
|
|
|
|
namespace Txgy.EWS.Client.PageModule.Views
|
|
{
|
|
/// <summary>
|
|
/// StereogramView.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class StereogramView : UserControl
|
|
{
|
|
private IEventAggregator _ea;
|
|
Dispatcher _dispatcher;
|
|
// Delegates
|
|
private delegate void HandleDataGeneratedDelegate();
|
|
/// <summary>
|
|
/// Delegate for data generation.
|
|
/// </summary>
|
|
private HandleDataGeneratedDelegate _handleDataGenerated;
|
|
public SizeDoubleXYZ EventSize;
|
|
public StereogramView(IUnityContainer unityContainer, IEventAggregator ea)
|
|
{
|
|
InitializeComponent();
|
|
_ea = ea;
|
|
_dispatcher = unityContainer.Resolve<Dispatcher>();
|
|
_handleDataGenerated = new HandleDataGeneratedDelegate(PutSamplesToChart);
|
|
EventSize = new SizeDoubleXYZ(GlobalConfig.eventDSize, GlobalConfig.eventDSize, GlobalConfig.eventDSize);
|
|
this._ea.GetEvent<UpdateSearchEventMessage>().Subscribe(u =>
|
|
{
|
|
_dispatcher.Invoke(_handleDataGenerated);
|
|
//保存图片
|
|
//BitmapEncoder encoder = new JpegBitmapEncoder();
|
|
//encoder.Frames.Add(chart.CaptureToBitmap());
|
|
//string file1 = @"e:\png.jpg";
|
|
//using (Stream stm = File.Create(file1))
|
|
//{
|
|
// encoder.Save(stm);
|
|
//}
|
|
});
|
|
_dispatcher.Invoke(_handleDataGenerated);
|
|
}
|
|
private void PutSamplesToChart()
|
|
{
|
|
//(Application.Current. as EarlyWarningView).chart.Add(item);
|
|
//Type type = Type.GetType("Txgy.EWS.Client.PageModule.Views.EarlyWarningView");
|
|
//LightningChart lChart = (Activator.CreateInstance(type) as EarlyWarningView).chart;
|
|
|
|
this.chart.BeginUpdate();
|
|
|
|
List<SeriesPoint3D> sp3List = new List<SeriesPoint3D>();
|
|
foreach (var ms in GlobalData.SearchEvents)
|
|
{
|
|
{
|
|
float sizeFactor = (float)(((4f + ms.ML) / (4f)) * 4f) + 0.1f;
|
|
int colorIndex = (int)(((ms.Z - GlobalConfig.ProjectConfig.WorkArea.ZMin)
|
|
/ Math.Abs(GlobalConfig.ProjectConfig.WorkArea.ZMax - GlobalConfig.ProjectConfig.WorkArea.ZMin))
|
|
* GlobalConfig.ColorCountDefault);
|
|
Color ec = GlobalConfig.eventDepthColor[colorIndex];
|
|
|
|
sp3List.Add(new SeriesPoint3D((ms.X), (GlobalConfig.BaseZ - ms.Z), (ms.Y), ec, sizeFactor));
|
|
|
|
}
|
|
}
|
|
|
|
PointLineSeries3D plsEvent3d = new PointLineSeries3D();
|
|
plsEvent3d.Title.Text = "微地震事件";
|
|
plsEvent3d.Tag = "mmevent";
|
|
plsEvent3d.IndividualPointColors = true;
|
|
plsEvent3d.IndividualPointSizes = true;
|
|
plsEvent3d.LineVisible = false;
|
|
plsEvent3d.AllowUserInteraction = true;
|
|
plsEvent3d.PointsVisible = true;
|
|
plsEvent3d.PointStyle.Shape3D = PointShape3D.Sphere;
|
|
plsEvent3d.PointStyle.Size3D = EventSize;
|
|
plsEvent3d.AddPoints(sp3List.ToArray(), false);
|
|
//ChartPointLineCollection.Add(plsEvent3d);
|
|
//Console.WriteLine(ChartPointLineCollection.Count);
|
|
this.chart.View3D.PointLineSeries3D.Add(plsEvent3d);
|
|
this.chart.EndUpdate();
|
|
|
|
}
|
|
}
|
|
}
|