/// <summary> /// The AddDicomFromFile. /// </summary> /// <param name="str">The str<see cref="string[]"/>.</param> private void AddDicomFromFile(string[] str) { Li_DicomImages = new List <MyDicom>(); rawPixelData = new byte[] { }; //string[] files = str; List <FileInfo> files = new List <FileInfo>(); str.Each(x => files.Add(new FileInfo(x))); // FileInfo[] fileInfos_Array = files.ToArray(); files = files.OrderBy(f => f.LastWriteTime).ToList(); // Array.Sort(files); foreach (var file_ in files) { string file = file_.FullName; if (file.ToLower().Contains(".dcm")) { MyDicom myDicom1 = new MyDicom(Dicom.DicomFile.Open(file)); Li_DicomImages.Add(myDicom1); } else if (file.ToLower().Contains(".raw")) { Li_DicomImages.Clear(); byte[] temp = System.IO.File.ReadAllBytes(file); rawPixelData = rawPixelData.Concat <byte>(temp).ToArray(); DicomFile dicomFile = StaticImageFun.GetDicomFileByRaw(rawPixelData, rawPixelData.Length / (int.Parse(TB_TopoWidth.Text) * 4), int.Parse(TB_TopoWidth.Text)); MyDicom myDicom1 = new MyDicom(dicomFile); Li_DicomImages.Add(myDicom1); } } if (Li_DicomImages.Count != 0) { RefreshDicomDirInfo(); } }
/// <summary> /// The SB_PicSelect_ValueChanged. /// </summary> /// <param name="sender">The sender<see cref="object"/>.</param> /// <param name="e">The e<see cref="RoutedPropertyChangedEventArgs{double}"/>.</param> private void SB_PicSelect_ValueChanged(object sender, RoutedPropertyChangedEventArgs <double> e) { //Dispatcher.BeginInvoke(new Action(() => //{ if (Li_DicomImages.Count > 0) { Image_View.Source = Li_DicomImages[(int)SB_PicSelect.Value].RendImage(); TBlock_ImageIndexAndCount.Text = ((int)(SB_PicSelect.Value) + 1).ToString() + "/" + (SB_PicSelect.Maximum + 1); myDicom = Li_DicomImages[(int)SB_PicSelect.Value]; } }
/// <summary> /// The AddDicomFromDir. /// </summary> /// <param name="path">The path<see cref="string"/>.</param> private void AddDicomFromDir(string path) { DirectoryInfo dir = new DirectoryInfo(path); //try //{ //判断所指的文件夹/文件是否存在 if (!dir.Exists) { log.Error("文件夹不存在" + path); return; } Li_DicomImages = new List <MyDicom>(); DirectoryInfo dirD = dir as DirectoryInfo; FileSystemInfo[] files = dirD.GetFiles().OrderBy(f => f.LastWriteTime).ToArray();//获取文件夹下所有文件和文件夹 //Array.Sort(files); foreach (FileSystemInfo FSys in files) { if (File.Exists(FSys.FullName) && FSys.Name.Contains("dcm")) { FileInfo fileInfo = FSys as FileInfo; if (fileInfo != null) { //如果是文件,进行文件操作 // FileInfo SFInfo = new FileInfo(fileInfo.DirectoryName + "\\" + fileInfo.Name);//获取文件所在原始路径 string filePath = fileInfo.DirectoryName + "\\" + fileInfo.Name; if (filePath.ToLower().Contains("dcm")) { MyDicom myDicom1 = new MyDicom(Dicom.DicomFile.Open(filePath)); Li_DicomImages.Add(myDicom1); } else { Li_DicomImages.Clear(); byte[] temp = System.IO.File.ReadAllBytes(filePath); DicomFile dicomFile = StaticImageFun.GetDicomFileByRaw(temp, temp.Length / (int.Parse(TB_TopoWidth.Text) * 2), int.Parse(TB_TopoWidth.Text)); MyDicom myDicom1 = new MyDicom(dicomFile); Li_DicomImages.Add(myDicom1); } } } } if (Li_DicomImages.Count != 0) { RefreshDicomDirInfo(); } }
/// <summary> /// The RefreshDicomDirInfo. /// </summary> private void RefreshDicomDirInfo() { Dispatcher.BeginInvoke(new Action(() => { if (Li_DicomImages.Count > 0) { SB_PicSelect.Minimum = 0; SB_PicSelect.Maximum = Li_DicomImages.Count - 1; SB_PicSelect.Value = 0; TBlock_ImageIndexAndCount.Text = ((int)(SB_PicSelect.Value) + 1).ToString() + "/" + (SB_PicSelect.Maximum + 1); myDicom = Li_DicomImages[0]; Update_Image(); } })); }
/// <summary> /// Initializes a new instance of the <see cref="DicomTagView"/> class. /// </summary> /// <param name="_myDicom">The _myDicom<see cref="MyDicom"/>.</param> public DicomTagView(MyDicom _myDicom) { myDicom = _myDicom ?? throw new ArgumentNullException(nameof(_myDicom)); InitializeComponent(); }