using KGIS.Framework.Platform; using KGIS.Framework.Utils; using KGIS.Framework.Utils.Helper; using KGIS.Framework.Utils.Interface; using Kingo.ImageViewForWebSocket; using System.Collections.Generic; using System.IO; using System.Windows; using System.Windows.Forms; using System.Windows.Input; using System.Windows.Media.Imaging; namespace Kingo.Plugin.General.View { /// /// UCShowImage.xaml 的交互逻辑 /// public partial class UCShowImage : BaseWindow { private List attachEntities = null; public string _imagePath { get; set; } public UCShowImage(string imagePath = "", List ImgList = null) { InitializeComponent(); Control.CheckForIllegalCrossThreadCalls = false;//添加这句 if (!string.IsNullOrEmpty(imagePath)) { _imagePath = imagePath; LoadImage(imagePath); } if (ImgList != null) attachEntities = ImgList; } private BitmapImage _image; public BitmapImage Image { get { return _image; } set { if (_image != value) { _image = value; //OnPropertyChanged(nameof(Image)); } } } public void LoadImage(string imagePath) { try { // 从图片路径加载图像数据 byte[] imageData = File.ReadAllBytes(imagePath); // 将字节数据转换为BitmapImage using (MemoryStream memoryStream = new MemoryStream(imageData)) { BitmapImage bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.StreamSource = memoryStream; bitmapImage.CacheOption = BitmapCacheOption.OnLoad; bitmapImage.EndInit(); // 设置Image属性值 Image = bitmapImage; imgInfo.Source = Image; } } catch (System.Exception ex) { LogAPI.Debug("LoadImage异常:" + ex.Message); LogAPI.Debug("LoadImage异常:" + ex.StackTrace); } } #region 上一张 private void Prev_Click(object sender, System.Windows.RoutedEventArgs e) { try { if (attachEntities != null && !string.IsNullOrEmpty(_imagePath)) { int attIndex = attachEntities.FindIndex(x => x.AttachLocationPath == _imagePath); if (attIndex <= 0) return; attIndex = attIndex - 1; var attachEntitie = attachEntities[attIndex]; if (attachEntitie != null) { LoadImage(attachEntitie.AttachLocationPath); _imagePath = attachEntitie.AttachLocationPath; Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "Prev" }); } } } catch (System.Exception ex) { LogAPI.Debug("LoadImage异常:" + ex.Message); LogAPI.Debug("LoadImage异常:" + ex.StackTrace); } } #endregion #region 下一张 private void Next_Click(object sender, System.Windows.RoutedEventArgs e) { try { if (attachEntities != null && !string.IsNullOrEmpty(_imagePath)) { int attIndex = attachEntities.FindIndex(x => x.AttachLocationPath == _imagePath); if (attIndex >= attachEntities.Count - 1) return; attIndex = attIndex + 1; var attachEntitie = attachEntities[attIndex]; if (attachEntitie != null) { LoadImage(attachEntitie.AttachLocationPath); _imagePath = attachEntitie.AttachLocationPath; Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "Next" }); } } } catch (System.Exception ex) { LogAPI.Debug("LoadImage异常:" + ex.Message); LogAPI.Debug("LoadImage异常:" + ex.StackTrace); } } #endregion Point _pressedPosition; bool _isDragMoved = false; private void BaseWindow_PreviewMouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { _pressedPosition = e.GetPosition(this); } private void BaseWindow_PreviewMouseMove(object sender, System.Windows.Input.MouseEventArgs e) { if (Mouse.LeftButton == MouseButtonState.Pressed && _pressedPosition != e.GetPosition(this)) { _isDragMoved = true; DragMove(); } } private void BaseWindow_PreviewMouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { if (_isDragMoved) { _isDragMoved = false; e.Handled = true; } } } }