Example #1
0
        /// <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();
            }
        }
Example #2
0
 /// <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];
     }
 }
Example #3
0
        /// <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();
            }
        }
Example #4
0
 /// <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();
         }
     }));
 }
Example #5
0
 /// <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();
 }