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 { /// /// StereogramView.xaml 的交互逻辑 /// public partial class StereogramView : UserControl { private IEventAggregator _ea; Dispatcher _dispatcher; // Delegates private delegate void HandleDataGeneratedDelegate(); /// /// Delegate for data generation. /// private HandleDataGeneratedDelegate _handleDataGenerated; public SizeDoubleXYZ EventSize; public StereogramView(IUnityContainer unityContainer, IEventAggregator ea) { InitializeComponent(); _ea = ea; _dispatcher = unityContainer.Resolve(); _handleDataGenerated = new HandleDataGeneratedDelegate(PutSamplesToChart); EventSize = new SizeDoubleXYZ(GlobalConfig.eventDSize, GlobalConfig.eventDSize, GlobalConfig.eventDSize); this._ea.GetEvent().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 sp3List = new List(); 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(); } } }