using DataEntity;
|
using DataEntity.Share;
|
using Newtonsoft.Json.Linq;
|
using System;
|
using System.Collections.Generic;
|
using System.Collections.ObjectModel;
|
using System.Data;
|
using System.IO;
|
using System.Linq;
|
using System.Windows;
|
using System.Windows.Controls;
|
using System.Windows.Input;
|
using System.Windows.Media.Animation;
|
using System.Windows.Media.Media3D;
|
using XCommon.Log;
|
using XHandler.Class;
|
using XHandler.Class.DataEx;
|
using XImagingXhandler.XDAL;
|
|
namespace XHandler.View.BacteriaPickResult
|
{
|
/// <summary>
|
/// 挑选菌落详情页面
|
/// </summary>
|
public partial class BacteriaPickDetails : UserControl
|
{
|
#region 变量
|
/// <summary>
|
/// 挑菌拍照基本信息
|
/// </summary>
|
private ExperimentRunChoiceBacteraModel m_expRunChoiceBactera = null;
|
private ObservableCollection<BacteriaCoordinateEx> m_bacteriaChoiceDetailList = null;
|
public event EventHandler closeEvent = null;
|
#endregion
|
|
#region 初始化
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
/// <param name="expRunChoiceBactera">挑菌拍照基本信息</param>
|
public BacteriaPickDetails(ExperimentRunChoiceBacteraModel expRunChoiceBactera)
|
{
|
InitializeComponent();
|
m_expRunChoiceBactera = expRunChoiceBactera;
|
this.DataContext = m_expRunChoiceBactera;
|
|
if (expRunChoiceBactera != null)
|
{
|
// 获取挑选详细信息
|
m_bacteriaChoiceDetailList = GetBacteriaCoordinateList(expRunChoiceBactera.UpdateJsonPath);
|
dgPickData.ItemsSource = m_bacteriaChoiceDetailList;
|
}
|
|
// 菌落来源
|
List<string> sourceList = new List<string>();
|
sourceList.Add(Properties.Resources.strPlsSelect);
|
sourceList.Add(Properties.Resources.strImagingSystem);
|
sourceList.Add(Properties.Resources.strManualAdded);
|
comboxBacteriaSource.ItemsSource = sourceList;
|
comboxBacteriaSource.SelectedIndex = 0;
|
}
|
|
/// <summary>
|
/// 初始化
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void UserControl_Loaded(object sender, RoutedEventArgs e)
|
{
|
//Storyboard storyboard = new Storyboard();
|
|
//DoubleAnimation doubleAnimation = new DoubleAnimation(0, 1300, new Duration(TimeSpan.FromSeconds(0.25)));
|
//Storyboard.SetTarget(doubleAnimation, border);//Target对象
|
//Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("Width"));//Target属性
|
//storyboard.Children.Add(doubleAnimation);
|
|
//ObjectAnimationUsingKeyFrames showAnimation = new ObjectAnimationUsingKeyFrames();
|
//showAnimation.BeginTime = TimeSpan.FromSeconds(0);
|
//Storyboard.SetTarget(showAnimation, this);
|
//Storyboard.SetTargetProperty(showAnimation, new PropertyPath("(UIElement.Visibility)"));
|
//DiscreteObjectKeyFrame closeKeyFrame = new DiscreteObjectKeyFrame(Visibility.Visible, TimeSpan.FromSeconds(0.01));
|
//showAnimation.KeyFrames.Add(closeKeyFrame);
|
//storyboard.Children.Add(showAnimation);
|
|
//storyboard.Begin();
|
|
|
this.Width = Shared.Config.DisplaySizeW;
|
this.Height = Shared.Config.DisplaySizeH;
|
}
|
|
/// <summary>
|
/// 获取挑选详细信息
|
/// </summary>
|
/// <param name="jsonFile"></param>
|
/// <returns></returns>
|
private ObservableCollection<BacteriaCoordinateEx> GetBacteriaCoordinateList(string jsonFile = "")
|
{
|
ObservableCollection<BacteriaCoordinateEx> list = new ObservableCollection<BacteriaCoordinateEx>();
|
|
if (string.IsNullOrEmpty(jsonFile))
|
{
|
LoggerHelper.ErrorLog("[GetBacteriaCoordinateList]: json File is null");
|
return list;
|
}
|
|
if (!File.Exists(jsonFile))
|
{
|
LoggerHelper.ErrorLog(string.Format("[GetBacteriaCoordinateList]:jsonFile is not exist. jsonFile = {0}", jsonFile));
|
return list;
|
}
|
|
try
|
{
|
string jsonData = File.ReadAllText(jsonFile);
|
jsonData = jsonData.Replace("#!HxSEP!#", "");
|
|
JObject job = JObject.Parse(jsonData);
|
JArray jArray = (JArray)job["germlist"];
|
|
foreach (JToken jt in jArray)
|
{
|
BacteriaCoordinate bacteriaCoordinate = new BacteriaCoordinate();
|
bacteriaCoordinate.bacteriacoordinate_id = jt["index"].ToString();
|
string coordinate3D = string.Empty;
|
string coordinate3Dx = jt["coordinate3D"]["x"].ToString();
|
string coordinate3Dy = jt["coordinate3D"]["y"].ToString();
|
string coordinate3Dz = jt["coordinate3D"]["z"].ToString();
|
coordinate3D = jt["coordinate3D"]["x"].ToString() + "," + jt["coordinate3D"]["y"].ToString() + "," + jt["coordinate3D"]["z"].ToString();
|
bacteriaCoordinate.coordinate_machine = coordinate3D;
|
string coordinatePixel = string.Empty;
|
string pixelx = jt["coordinatePixel"]["x"].ToString();
|
string pixely = jt["coordinatePixel"]["y"].ToString();
|
coordinatePixel = jt["coordinatePixel"]["x"].ToString() + "," + jt["coordinatePixel"]["y"].ToString();
|
bacteriaCoordinate.coordinate_pixel = coordinatePixel;
|
|
BacteriaCoordinateEx ex = new BacteriaCoordinateEx(bacteriaCoordinate);
|
ex.diameter = jt["diameterSize"].ToString();
|
double pixelX = double.Parse(pixelx);
|
double pixelY = double.Parse(pixely);
|
ex.pixelPoint = new Point(pixelX, pixelY);
|
|
double p3DX = double.Parse(coordinate3Dx);
|
double p3DY = double.Parse(coordinate3Dy);
|
double p3DZ = double.Parse(coordinate3Dz);
|
ex.machinePoint = new Point3D(p3DX, p3DY, p3DZ);
|
|
ex.bacteria_type = "";//bacteriaChoiceResultData.bacteria_name;
|
ex.bacteria_shape = jt["shape"].ToString();//bacteriaChoiceResultData.bacteria_shape_name;
|
ex.bacteria_color = jt["color"].ToString();// bacteriaChoiceResultData.bacteria_color_name;
|
ex.bacteria_edge = jt["edge"].ToString();// bacteriaChoiceResultData.bacteria_edge_name;
|
ex.isManualPick = (jt["manualPick"].ToString() == "true") ? true : false;
|
list.Add(ex);
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
|
return list;
|
}
|
#endregion
|
|
#region 窗口关闭
|
/// <summary>
|
/// 窗口关闭
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnClose_Click(object sender, RoutedEventArgs e)
|
{
|
if (EventResponseController.Instance.CanExecute() == false)
|
return;
|
|
//Storyboard storyboard = new Storyboard();
|
|
//DoubleAnimation doubleAnimation = new DoubleAnimation(1300, 0, new Duration(TimeSpan.FromSeconds(0.25)));
|
//Storyboard.SetTarget(doubleAnimation, border);//Target对象
|
//Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("Width"));//Target属性
|
//storyboard.Children.Add(doubleAnimation);
|
|
//ObjectAnimationUsingKeyFrames showAnimation = new ObjectAnimationUsingKeyFrames();
|
//showAnimation.BeginTime = TimeSpan.FromSeconds(0);
|
//Storyboard.SetTarget(showAnimation, this);
|
//Storyboard.SetTargetProperty(showAnimation, new PropertyPath("(UIElement.Visibility)"));
|
//DiscreteObjectKeyFrame closeKeyFrame = new DiscreteObjectKeyFrame(Visibility.Collapsed, TimeSpan.FromSeconds(0.26));
|
//showAnimation.KeyFrames.Add(closeKeyFrame);
|
//storyboard.Children.Add(showAnimation);
|
//storyboard.Completed += delegate { closeEvent?.Invoke(this, EventArgs.Empty); };
|
//storyboard.Begin();
|
|
closeEvent?.Invoke(this, EventArgs.Empty);
|
}
|
#endregion
|
|
#region 菌落来源选择变更
|
/// <summary>
|
/// 菌落来源选择变更
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void comboxBacteriaSource_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
{
|
if (comboxBacteriaSource.SelectedIndex == 0)
|
{
|
dgPickData.ItemsSource = m_bacteriaChoiceDetailList;
|
}
|
else if (comboxBacteriaSource.SelectedIndex == 1)
|
{
|
var result = m_bacteriaChoiceDetailList.Where(s => s.isManualPick.Equals(false));
|
dgPickData.ItemsSource = result;
|
}
|
else if (comboxBacteriaSource.SelectedIndex == 2)
|
{
|
var result = m_bacteriaChoiceDetailList.Where(s => s.isManualPick.Equals(true));
|
dgPickData.ItemsSource = result;
|
}
|
}
|
#endregion
|
|
#region 原图预览
|
/// <summary>
|
/// 原图预览
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void Image_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
{
|
if (e.ClickCount > 1)
|
{
|
ImagePreview imagePreview = new ImagePreview(m_expRunChoiceBactera.UpdateImagePath);
|
imagePreview.closeEvent += ImagePreview_closeEvent;
|
Window wnd = Application.Current.MainWindow;
|
Grid parent = Utilities.FindVisualChild<Grid>(wnd);
|
parent.Children.Add(imagePreview);
|
}
|
}
|
|
/// <summary>
|
/// 预览窗口关闭
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void ImagePreview_closeEvent(object sender, EventArgs e)
|
{
|
// 移除元素
|
UIElement element = sender as UIElement;
|
Utilities.RemoveChild(element);
|
}
|
#endregion
|
|
#region 挑菌后的图片预览
|
/// <summary>
|
/// 挑菌后的图片预览
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void SrcImage_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
{
|
if (e.ClickCount > 1)
|
{
|
ImagePreview imagePreview = new ImagePreview(m_expRunChoiceBactera.SourceImagePath);
|
imagePreview.closeEvent += ImagePreview_closeEvent;
|
Window wnd = Application.Current.MainWindow;
|
Grid parent = Utilities.FindVisualChild<Grid>(wnd);
|
parent.Children.Add(imagePreview);
|
}
|
}
|
#endregion
|
|
#region Del
|
//private void comboxPickMode_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
//{
|
// if (comboxPickMode.SelectedIndex == 0)
|
// {
|
// dgPickData.ItemsSource = bacteriaCoordinateExList;
|
// }
|
// else if (comboxPickMode.SelectedIndex == 1)
|
// {
|
// var result = bacteriaCoordinateExList.Where(s => s.isManualPick.Equals(true));
|
// dgPickData.ItemsSource = result;
|
|
// }
|
// else if (comboxPickMode.SelectedIndex == 2)
|
// {
|
// var result = bacteriaCoordinateExList.Where(s => s.isManualPick.Equals(false));
|
// dgPickData.ItemsSource = result;
|
// }
|
//}
|
#endregion
|
}
|
}
|