超碰91资源站-超碰97豆花-超碰97人妻-超碰97人人干-超碰97人人香蕉-超碰97天天操-超碰97在线资源站-超碰97资源站共享-超碰97资源站总站-超碰aa在线91-超碰av操-超碰爱爱

半岛外围网上直营

logo LEADTOOLS使用教程

LeadTools 使用基準線


在本教程中,您將學習到如何在MedicalViewer 單元格中顯示基準線。

1. 請您打開Visual Studio2005或一個更高的版本。

2. 從“文件”菜單中選擇“項目”。

3. 然后會出現一個新建項目對話框。

4. 從“項目類型”中展開“其他語言”節點,然后單擊在“Visual C#” 節點上。

5. 從該對話框左側的模板列表中,選擇“Windows窗體應用程序”。

6. 在“項目名稱”字段里輸入該項目的名稱“使用基準線”,然后選擇“確定”。

7. 選擇“確定”來創建該項目。

8. 從“視圖”菜單中選擇“解決方案資源管理器”。

9. 在“解決方案資源管理器”的樹型圖中,右鍵單擊“引用”節點,然后選擇“添加引用”。

10. 在“添加引用”對話框中選擇“瀏覽”選項卡,然后添加以下這些DLL文件:

  • Leadtools.dll
  • Leadtools.Codecs.dll
  • Leadtools.MedicalViewer.dll
  • Leadtools.Medical3D.dll
  • Leadtools.Dicom.dll
  • Leadtools.Codecs.Cmp.dll

11. 切換到Form1代碼視圖(在“解決方案資源管理器”上右鍵單擊Form1,然后選擇“查看代碼”),并在文件的開頭添加以下幾行代碼:

            Imports Leadtools
            Imports Leadtools.Codecs
            Imports Leadtools.MedicalViewer
            Imports Leadtools.Medical3D
            Imports Leadtools.Dicom
            using Leadtools;
            using Leadtools.Codecs;
            using Leadtools.MedicalViewer;
            using Leadtools.Medical3D;
            using Leadtools.Dicom;

12. 在Form1中,創建一個新的方法InitClass() 。并將以下代碼添加到該方法:

            Private Sub InitClass()
               Dim MY_LICENSE_FILE As String = "d:\temp\TestLic.lic"
                 
               ' 開啟DICOM支持。
               Dim MY_DicomDEVELOPER_KEY As String = "xyz123abc"
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DicomDEVELOPER_KEY);
                 
               ' 開啟Medical支持。
               Dim MY_MedicalDEVELOPER_KEY As String = "abc123xyz"
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_MedicalDEVELOPER_KEY);
                 
               ' 開啟Medical 3D支持。
               Dim MY_3DDEVELOPER_KEY As String = "123xyzabc"
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_3DDEVELOPER_KEY);
               
               ' 創建一個將被用于加載圖像的編解碼器類的新實例。
               Dim _codecs As RasterCodecs = New RasterCodecs()
               ' 創建一個MedicalViewer的新實例。該查看器布局將被劃分為2X2。
               Dim viewer As MedicalViewer = New MedicalViewer(2, 2)
               ' 使該視圖與整個窗體相匹配。
               viewer.Dock = DockStyle.Fill
               ' 將該查看器添加到窗體。
               Controls.Add(viewer)
            End Sub
            void InitClass()
            {
               string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic";
               
               // 開啟DICOM支持。
               string MY_DicomDEVELOPER_KEY = "xyz123abc";
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DicomDEVELOPER_KEY);
                 
               // 開啟Medical支持。
               string MY_MedicalDEVELOPER_KEY = "abc123xyz";
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_MedicalDEVELOPER_KEY);
                 
               // 開啟Medical 3D支持。
               string MY_3DDEVELOPER_KEY = "123xyzabc";
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_3DDEVELOPER_KEY);
               
               // 創建一個將被用于加載圖像的編解碼器類的新實例。
               RasterCodecs _codecs = new RasterCodecs();
               // 創建一個MedicalViewer的新實例。該查看器布局將被劃分為2X2。
               MedicalViewer viewer = new MedicalViewer(2, 2);
               // 使該視圖與整個窗體相匹配。
               viewer.Dock = DockStyle.Fill;
               // 將該查看器添加到窗體。
               Controls.Add(viewer);
            }

13. 請從Form1的構造函數中調用該方法InitClass,并將該調用放置于InitializeComponent()之后。

14. 運行該程序,您將會看到一個2x2布局。

15. 注意:在接下來的步驟中,您將需要具備一個DICOMDIR文件。我們可以提供DICOMDIR示例文件,您可以點擊這里進行下載。如果您想要了解有關如何在DICOMDIR中構建3D對象的更多相關詳細信息,請參閱這一章“如何加載DICOMDIR來創建一個3D對象”。

注意:如果您遇到一個“無效的文件格式”或“功能不支持”的異常,請參閱如下主題“無效的文件格式/功能不支持”。

請下載示例DICOMDIR,并將其內容解壓縮到此文件夾:C:\Leadtools_DICOMDIR。

16. 請將如下代碼添加到Form1類。該代碼可用于從DICOMDIR中加載圖像,將它們進行排序,并從中提取所有的有用信息:

            Private _studyElement As DicomElement
            Private _seriesElement As DicomElement
            Private _seriesManager As MedicalViewerSeriesManager
            Private _imageDataList As List(Of MedicalViewerImageData)
            Private doubleArray As Double()
            Private patientElement As DicomElement
            Private referenceUID As String
            Private imageElement As DicomElement
            Private output As MedicalViewerSeriesManager
            ' 您需要找到使用了科目實例UID的科目,并且在找到之后返回其DicomElement。 
            Private Function FindStudy(ByVal ds As DicomDataSet, ByVal studyInstanceUID As String) As DicomElement
              ' 獲取父元素。
              Dim patientElement As DicomElement = ds.GetFirstKey(Nothing, True)
              Dim studyElement As DicomElement = Nothing
              Dim studyInformationElement As DicomElement = Nothing
              Dim studyID As String
              studyElement = ds.GetChildKey(patientElement)
              studyElement = ds.GetChildElement(studyElement, True)
              Do While Not studyElement Is Nothing
                studyInformationElement = ds.FindFirstElement(studyElement, DicomTag.StudyInstanceUID, True)
                If Not studyInformationElement Is Nothing Then
                   studyID = ds.GetConvertValue(studyInformationElement)
                   If studyID = studyInstanceUID Then
                     Return studyInformationElement
                   End If
                End If
                studyElement = ds.GetNextKey(studyElement, True)
                studyElement = ds.GetChildElement(studyElement, True)
              Loop
              Return Nothing
            End Function
            ' 您需要找到使用了系列實例UID的系列,并在找到后返回其DicomElement。
            Private Function FindSeries(ByVal ds As DicomDataSet, ByVal studyElement As DicomElement, ByVal seriesInstanceUID As String) As DicomElement
              Dim seriesElement As DicomElement = Nothing
              Dim seriesInformationElement As DicomElement = Nothing
              Dim seriesID As String
              seriesElement = ds.GetChildKey(studyElement)
              seriesElement = ds.GetChildElement(seriesElement, True)
              Do While Not seriesElement Is Nothing
                seriesInformationElement = ds.FindFirstElement(seriesElement, DicomTag.SeriesInstanceUID, True)
                If Not seriesInformationElement Is Nothing Then
                   seriesID = ds.GetConvertValue(seriesInformationElement)
                   If seriesID = seriesInstanceUID Then
                     Return seriesInformationElement
                   End If
                End If
                seriesElement = ds.GetNextKey(seriesElement, True)
                seriesElement = ds.GetChildElement(seriesElement, True)
              Loop
              Return Nothing
            End Function
            ' 返回該系列的第一幀的文件名。
            Private Function GetFirstImageName(ByVal ds As DicomDataSet, ByVal seriesElement As DicomElement, ByVal directoryPath As String, <System.Runtime.InteropServices.Out()> ByRef imageElement As DicomElement) As String
              Dim imageIDElement As DicomElement = Nothing
              imageElement = ds.GetChildKey(seriesElement)
              imageElement = ds.GetChildElement(imageElement, True)
              Do While Not imageElement Is Nothing
                imageIDElement = ds.FindFirstElement(imageElement, DicomTag.ReferencedFileID, True)
                If Not imageIDElement Is Nothing Then
                   Return directoryPath &"\" & ds.GetConvertValue(imageIDElement)
                End If
              Loop
              Return ""
            End Function
            ' 返回該系列的下一幀的文件名。
            Private Function GetNextImageName(ByVal ds As DicomDataSet, ByVal directoryPath As String, ByRef imageElement As DicomElement) As String
              Dim nextImageElement As DicomElement = Nothing
              imageElement = ds.GetNextKey(imageElement, True)
              imageElement = ds.GetChildElement(imageElement, True)
              Do While Not imageElement Is Nothing
                nextImageElement = ds.FindFirstElement(imageElement, DicomTag.ReferencedFileID, True)
                If Not imageElement Is Nothing Then
                   Dim echoElement As DicomElement = ds.FindFirstElement(imageElement, DicomTag.EchoNumber, True)
                   Return directoryPath & "\" & ds.GetConvertValue(nextImageElement)
                End If
              Loop
              Return ""
            End Function
            ' 這將加載DICOM數據集信息,并將其保存到MedicalViewerImageData類的一個新實例中。
            Private Function AddImageToImageArray(ByVal ds As DicomDataSet, ByVal index As Integer, ByVal imagePath As String, <System.Runtime.InteropServices.Out()> ByRef echoNumber As Integer) As Boolean
              echoNumber = -1
              Dim imageData As MedicalViewerImageData = New MedicalViewerImageData()
              patientElement = ds.FindFirstElement(Nothing, DicomTag.ImagePositionPatient, True)
              doubleArray = ds.GetDoubleValue(patientElement, 0, 3)
              imageData.ImagePosition = Point3D.FromDoubleArray(doubleArray)
              imageData.Data = imagePath
              imageData.EchoNumber = echoNumber
              patientElement = ds.FindFirstElement(Nothing, DicomTag.FrameOfReferenceUID, True)
              referenceUID = ds.GetConvertValue(patientElement)
              imageData.FrameOfReferenceUID = referenceUID
              patientElement = ds.FindFirstElement(Nothing, DicomTag.ImageOrientationPatient, True)
              imageData.ImageOrientation = ds.GetConvertValue(patientElement)
              patientElement = ds.FindFirstElement(Nothing, DicomTag.PixelSpacing, True)
              doubleArray = ds.GetDoubleValue(patientElement, 0, 2)
              imageData.PixelSpacing = New Point2D(CSng(doubleArray(0)), CSng(doubleArray(1)))
              patientElement = ds.FindFirstElement(Nothing, DicomTag.InstanceNumber, True)
              If Not patientElement Is Nothing Then
                imageData.InstanceNumber = Convert.ToInt32(ds.GetConvertValue(patientElement))
              End If
              patientElement = ds.FindFirstElement(Nothing, DicomTag.InstanceCreationTime, True)
              If Not patientElement Is Nothing Then
                imageData.CaptureTime = Convert.ToDateTime(ds.GetConvertValue(patientElement))
              End If
              _imageDataList.Add(imageData)
              Return True
            End Function
            Public Function Load_James_CT_Localizer() As MedicalViewerSeriesManager
              Dim fileName As String = "C:\Leadtools_DICOMDIR\Miller James\"
              Dim studyInstanceUID As String = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000022"
              Dim seriesInstanceUID As String = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000023"
              Return LoadSeries(fileName, studyInstanceUID, seriesInstanceUID, 1)
            End Function
            Public Function Load_James_CT() As MedicalViewerSeriesManager
              Dim fileName As String = "C:\Leadtools_DICOMDIR\Miller James\"
              Dim studyInstanceUID As String = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000022"
              Dim seriesInstanceUID As String = "1.3.12.2.1107.5.1.4.50772.30000009122208215356200001997"
              Return LoadSeries(fileName, studyInstanceUID, seriesInstanceUID, 256)
            End Function
            ' 這將加載由seriesInstanceUID和studyInstanceUID所指定的系列,而這兩個UID來自fileName指定的文件。
            Private Function LoadSeries(ByVal fileName As String, ByVal studyInstanceUID As String, ByVal seriesInstanceUID As String, ByVal count As Integer) As MedicalViewerSeriesManager
              DicomEngine.Startup()
              Dim ds As DicomDataSet = New DicomDataSet()
              ds.Load(fileName &"DICOMDIR", DicomDataSetLoadFlags.None)
              Dim directoryPath As String = fileName
              ' 在這里,該程序將會對包含指定的studyInstanceUID的科目進行搜索。 
              _studyElement = FindStudy(ds, studyInstanceUID)
              ' 在這里,該程序將會對包含指定的seriesInstanceUID的系列進行搜索。
              _seriesElement = FindSeries(ds, _studyElement, seriesInstanceUID)
              ' 請創建一個MedicalViewerSeriesManager的新實例。它將被用于對圖像進行排序,以便創建正確的3D對象。
              _seriesManager = New MedicalViewerSeriesManager()
              ' 請創建一個MedicalViewerImageData的陣列。該類將被用于保存幀信息。而該信息將被用于對圖像進行排序。
              _imageDataList = New List(Of MedicalViewerImageData)()
              Dim dicomDataSet As DicomDataSet
              Dim imageIndex As Integer
              Dim imagePath As String
              Dim echoNumber As Integer = 0
              ' 現在,該程序將對該系列中的每一幀進行審查。
              imagePath = GetFirstImageName(ds, _seriesElement, directoryPath, imageElement)
              imageIndex = 0
              Do While imageIndex < count
                Try
                   ' 該系列中的每個圖像都將被加載。
                   dicomDataSet = New DicomDataSet()
                   dicomDataSet.Load(imagePath, DicomDataSetLoadFlags.None)
                   ' 該程序可以加載它的信息,并將其保存到MedicalViewerImageData類的一個新實例中。
                   AddImageToImageArray(dicomDataSet, imageIndex, imagePath, echoNumber)
                   dicomDataSet.Dispose()
                   ' 跳轉到下一個圖像。
                   imagePath = GetNextImageName(ds, directoryPath, imageElement)
                Catch exception As System.Exception
                   System.Diagnostics.Debug.Assert(False, exception.Message)
                   Throw
                End Try
                 imageIndex += 1
              Loop
              ' 根據它的數據對這些圖像進行排序。
              _seriesManager.Sort(_imageDataList)
              DicomEngine.Shutdown()
              Return _seriesManager
            End Function
            Private Sub LoadLocalizer(ByVal cell As MedicalViewerMultiCell)
              ' 啟動允許加載各種圖像的編解碼器。
              Dim _codecs As RasterCodecs = New RasterCodecs()
              ' 加載CT定位器。
              output = Load_James_CT_Localizer()
              cell.Image = _codecs.Load(CStr(output.Localizers(0).LocalizerData.Data), 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1)
              ' 設置以下三行代碼非常重要。否則,可能會發生基準線結果錯誤。
  ' 設置定位器的圖像位置。             
 cell.SetImagePosition(0, _seriesManager.Localizers(0).LocalizerData.ImagePosition, True)
              ' 設置定位器的圖像方向。
              cell.ImageOrientation = _seriesManager.Localizers(0).LocalizerData.ImageOrientationArray
              ' 設置定位器的像素間隔。
              cell.PixelSpacing = _seriesManager.Localizers(0).LocalizerData.PixelSpacing
              ' 設置定位器的幀引用UID。如果系列和定位器具有相同的引用UID的話,這樣就可以在它們之間創建一條基準線。
              cell.FrameOfReferenceUID = _seriesManager.Localizers(0).LocalizerData.FrameOfReferenceUID
            End Sub
            Private Sub Load2DCell(ByVal cell As MedicalViewerMultiCell)
              ' 啟動允許加載各種圖像的編解碼器。
              Dim _codecs As RasterCodecs = New RasterCodecs()
              ' 加載CT DICOMDIR,并返回排列好的圖像集合。
              output = Load_James_CT()
              ' 循環處理這些圖像,并將它們一個接一個地添加到最終的圖像。
              Dim image As RasterImage = Nothing
              Dim depth As Integer = output.Stacks(0).Items.Count
              Dim index As Integer
              index = 0
              Do While index < depth
                If image Is Nothing Then
                   image = _codecs.Load(CStr(output.Stacks(0).Items(index).Data), 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1)
                Else
                   image.AddPage(_codecs.Load(CStr(output.Stacks(0).Items(index).Data), 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1))
                End If
                 index += 1
              Loop
              cell.Image = image
              ' 設置以下這幾行代碼非常重要。否則,可能會出現基準線結果錯誤。
              index = 0
              Do While index < depth
                ' 設置每幀的圖像位置。
                cell.SetImagePosition(index, _seriesManager.Stacks(0).Items(index).ImagePosition, False)
                 index += 1
              Loop
              ' 請對該系列的圖像方向進行設置,且它只需被設置一次,因為所有的幀必須具有相同的方向值。
              cell.ImageOrientation = _seriesManager.Stacks(0).Items(0).ImageOrientationArray
              ' 請對該系列的像素間隔進行設置,且它只需被設置一次,因為所有的幀必須具有相同的像素間隔值。
              cell.PixelSpacing = _seriesManager.Stacks(0).Items(0).PixelSpacing
              ' 請對該系列的幀引用UID進行設置。如果該系列和定位器具有相同的引用UID的話,這將在它們之間創建一條基準線。
              cell.FrameOfReferenceUID = _seriesManager.Stacks(0).Items(0).FrameOfReferenceUID
            End Sub
            DicomElement _studyElement;
            DicomElement _seriesElement;
            MedicalViewerSeriesManager _seriesManager;
            List<MedicalViewerImageData> _imageDataList;
            double[] doubleArray;
            DicomElement patientElement;
            string referenceUID;
            DicomElement imageElement;
            MedicalViewerSeriesManager output;
            // 您需要找到使用了科目實例UID的科目,并且在找到之后返回其DicomElement。
            private DicomElement FindStudy(DicomDataSet ds, string studyInstanceUID)
            {
               // 獲取父元素。
               DicomElement patientElement = ds.GetFirstKey(null, true);
               DicomElement studyElement = null;
               DicomElement studyInformationElement = null;
               string studyID;
               studyElement = ds.GetChildKey(patientElement);
               studyElement = ds.GetChildElement(studyElement, true);
               while (studyElement != null)
               {
                  studyInformationElement = ds.FindFirstElement(studyElement,
                                                                DicomTag.StudyInstanceUID,
                                                                true);
                  if (studyInformationElement != null)
                  {
                     studyID = ds.GetConvertValue(studyInformationElement);
                     if (studyID == studyInstanceUID)
                        return studyInformationElement;
                  }
                  studyElement = ds.GetNextKey(studyElement, true);
                  studyElement = ds.GetChildElement(studyElement, true);
               }
               return null;
            }
            // 您需要找到使用了系列實例UID的系列,并在找到后返回其DicomElement。
            private DicomElement FindSeries(DicomDataSet ds, DicomElement studyElement, string seriesInstanceUID)
            {
               DicomElement seriesElement = null;
               DicomElement seriesInformationElement = null;
               string seriesID;
               seriesElement = ds.GetChildKey(studyElement);
               seriesElement = ds.GetChildElement(seriesElement, true);
               while (seriesElement != null)
               {
                  seriesInformationElement = ds.FindFirstElement(seriesElement,
                                                                 DicomTag.SeriesInstanceUID,
                                                                 true);
                  if (seriesInformationElement != null)
                  {
                     seriesID = ds.GetConvertValue(seriesInformationElement);
                     if (seriesID == seriesInstanceUID)
                        return seriesInformationElement;
                  }
                  seriesElement = ds.GetNextKey(seriesElement, true);
                  seriesElement = ds.GetChildElement(seriesElement, true);
               }
               return null;
            }
            // 返回該系列的第一幀的文件名。
            private string GetFirstImageName(DicomDataSet ds, DicomElement seriesElement, string directoryPath, out DicomElement imageElement)
            {
               DicomElement imageIDElement = null;
               imageElement = ds.GetChildKey(seriesElement);
               imageElement = ds.GetChildElement(imageElement, true);
               while (imageElement != null)
               {
                  imageIDElement = ds.FindFirstElement(imageElement,
                                                     DicomTag.ReferencedFileID,
                                                     true);
                  if (imageIDElement != null)
                  {
                     return directoryPath + "\\" + ds.GetConvertValue(imageIDElement);
                  }
               }
               return "";
            }
            // 返回該系列的下一幀的文件名。
            private string GetNextImageName(DicomDataSet ds, string directoryPath, ref DicomElement imageElement)
            {
               DicomElement nextImageElement = null;
               imageElement = ds.GetNextKey(imageElement, true);
               imageElement = ds.GetChildElement(imageElement, true);
               while (imageElement != null)
               {
                  nextImageElement = ds.FindFirstElement(imageElement,
                                                     DicomTag.ReferencedFileID,
                                                     true);
                  if (imageElement != null)
                  {
                     DicomElement echoElement = ds.FindFirstElement(imageElement,
                                                       DicomTag.EchoNumber,
                                                       true);
                     return directoryPath + "\\" + ds.GetConvertValue(nextImageElement);
                  }
               }
               return "";
            }
            // 這將加載DICOM數據集信息,并將其保存到MedicalViewerImageData類的一個新實例中。
            private bool AddImageToImageArray(DicomDataSet ds, int index, string imagePath, out int echoNumber)
            {
               echoNumber = -1;
               MedicalViewerImageData imageData = new MedicalViewerImageData();
               patientElement = ds.FindFirstElement(null,
                                                    DicomTag.ImagePositionPatient,
                                                    true);
               doubleArray = ds.GetDoubleValue(patientElement, 0, 3);
               imageData.ImagePosition = Point3D.FromDoubleArray(doubleArray);
               imageData.Data = imagePath;
               imageData.EchoNumber = echoNumber;
               patientElement = ds.FindFirstElement(null,
                                                   DicomTag.FrameOfReferenceUID,
                                                   true);
               referenceUID = ds.GetConvertValue(patientElement);
               imageData.FrameOfReferenceUID = referenceUID;
               patientElement = ds.FindFirstElement(null,
                                                   DicomTag.ImageOrientationPatient,
                                                   true);
               imageData.ImageOrientation = ds.GetConvertValue(patientElement);
               patientElement = ds.FindFirstElement(null,
                                                    DicomTag.PixelSpacing,
                                                    true);
               doubleArray = ds.GetDoubleValue(patientElement, 0, 2);
               imageData.PixelSpacing = new Point2D((float)doubleArray[0], (float)doubleArray[1]);
               patientElement = ds.FindFirstElement(null,
                                                   DicomTag.InstanceNumber,
                                                   true);
               if (patientElement != null)
                  imageData.InstanceNumber = Convert.ToInt32(ds.GetConvertValue(patientElement));
               patientElement = ds.FindFirstElement(null,
                                                   DicomTag.InstanceCreationTime,
                                                   true);
               if (patientElement != null)
                  imageData.CaptureTime = Convert.ToDateTime(ds.GetConvertValue(patientElement));
               _imageDataList.Add(imageData);
               return true;
            }
            public MedicalViewerSeriesManager Load_James_CT_Localizer()
            {
               string fileName = @"C:\Leadtools_DICOMDIR\Miller James\";
               string studyInstanceUID = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000022";
               string seriesInstanceUID = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000023";
               return LoadSeries(fileName, studyInstanceUID, seriesInstanceUID, 1);
            }
            public MedicalViewerSeriesManager Load_James_CT()
            {
               string fileName = @"C:\Leadtools_DICOMDIR\Miller James\";
               string studyInstanceUID = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000022";
               string seriesInstanceUID = "1.3.12.2.1107.5.1.4.50772.30000009122208215356200001997";
               return LoadSeries(fileName, studyInstanceUID, seriesInstanceUID, 256);
            }
            // 這將加載由seriesInstanceUID和studyInstanceUID所指定的系列,而這兩個UID來自fileName指定的文件。
            private MedicalViewerSeriesManager LoadSeries(string fileName, string studyInstanceUID, string seriesInstanceUID, int count)
            {
               DicomEngine.Startup();
               DicomDataSet ds = new DicomDataSet();
               ds.Load(fileName + "DICOMDIR", DicomDataSetLoadFlags.None);
               string directoryPath = fileName;
               // 在這里,該程序將會對包含指定的studyInstanceUID的科目進行搜索。
               _studyElement = FindStudy(ds, studyInstanceUID);
               // 在這里,該程序將會對包含指定的seriesInstanceUID的系列進行搜索。
               _seriesElement = FindSeries(ds, _studyElement, seriesInstanceUID);
               // 請創建一個MedicalViewerSeriesManager的新實例。它將被用于對圖像進行排序,以便創建正確的3D對象。
               _seriesManager = new MedicalViewerSeriesManager();
               // 請創建一個MedicalViewerImageData的陣列。該類將被用于保存幀信息。而該信息將被用于對圖像進行排序。
               _imageDataList = new List<MedicalViewerImageData>();
               DicomDataSet dicomDataSet;
               int imageIndex;
               string imagePath;
               int echoNumber = 0;
               // 現在,該程序將對該系列中的每一幀進行審查。
               imagePath = GetFirstImageName(ds, _seriesElement, directoryPath, out imageElement);
               for (imageIndex = 0; imageIndex < count; imageIndex++)
               {
                  try
                  {
                     // 該系列中的每個圖像都將被加載。
                     dicomDataSet = new DicomDataSet();
                     dicomDataSet.Load(imagePath, DicomDataSetLoadFlags.None);
                     // 該程序可以加載它的信息,并將其保存到MedicalViewerImageData類的一個新實例中。
                     AddImageToImageArray(dicomDataSet, imageIndex, imagePath, out echoNumber);
                     dicomDataSet.Dispose();
                     // 跳轉到下一個圖像。
                     imagePath = GetNextImageName(ds, directoryPath, ref imageElement);
                  }
                  catch (System.Exception exception)
                  {
                     System.Diagnostics.Debug.Assert(false, exception.Message);
                     throw;
                  }
               }
               // 根據它的數據對這些圖像進行排序。
               _seriesManager.Sort(_imageDataList);
               DicomEngine.Shutdown();
               return _seriesManager;
            }
            void LoadLocalizer(MedicalViewerMultiCell cell)
            {
               // 啟動允許加載各種圖像的編解碼器。
               RasterCodecs _codecs = new RasterCodecs();
               // 加載CT定位器。
               output = Load_James_CT_Localizer();
               cell.Image = _codecs.Load((string)output.Localizers[0].LocalizerData.Data, 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1);
               // 設置以下三行代碼非常重要。否則,可能會發生基準線結果錯誤。
               // 設置定位器的圖像位置。
               cell.SetImagePosition(0, _seriesManager.Localizers[0].LocalizerData.ImagePosition, true);
               // 設置定位器的圖像方向。
               cell.ImageOrientation = _seriesManager.Localizers[0].LocalizerData.ImageOrientationArray;
               // 設置定位器的像素間隔。
               cell.PixelSpacing = _seriesManager.Localizers[0].LocalizerData.PixelSpacing;
               // 設置定位器的幀引用UID。如果該系列和定位器具有相同的引用UID的話,這樣就可以在它們之間創建一條基準線。
               cell.FrameOfReferenceUID = _seriesManager.Localizers[0].LocalizerData.FrameOfReferenceUID;
            }
            void Load2DCell(MedicalViewerMultiCell cell)
            {
               // 啟動允許加載各種圖像的編解碼器。
               RasterCodecs _codecs = new RasterCodecs();
               // 加載CT DICOMDIR,并返回排列好的圖像集合。
               output = Load_James_CT();
               // 循環處理這些圖像,并將它們一個接一個地添加到最終的圖像。
               RasterImage image = null;
               int depth = output.Stacks[0].Items.Count;
               int index;
               for (index = 0; index < depth; index++)
               {
                  if (image == null)
                  {
                     image = _codecs.Load((string)output.Stacks[0].Items[index].Data, 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1);
                  }
                  else
                     image.AddPage(_codecs.Load((string)output.Stacks[0].Items[index].Data, 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1));
               }
               cell.Image = image;
               // 設置以下這幾行代碼非常重要。否則,可能會出現基準線結果錯誤。               for (index = 0; index < depth; index++)
               {
                  // 設置每幀的圖像位置。.
                  cell.SetImagePosition(index, _seriesManager.Stacks[0].Items[index].ImagePosition, false);
               }
               // 請對該系列的圖像方向進行設置,且它只需被設置一次,因為所有的幀必須具有相同的方向值。
               cell.ImageOrientation = _seriesManager.Stacks[0].Items[0].ImageOrientationArray;
               // 請對該系列的像素間隔進行設置,且它只需被設置一次,因為所有的幀必須具有相同的像素間隔值。.
               cell.PixelSpacing = _seriesManager.Stacks[0].Items[0].PixelSpacing;
               // 請對該系列的幀引用UID進行設置。如果該系列和定位器具有相同的引用UID的話,這將在它們之間創建一條基準線。
               cell.FrameOfReferenceUID = _seriesManager.Stacks[0].Items[0].FrameOfReferenceUID;
            }

17. 將如下幾行代碼添加到InitClass()方法的末尾(這將創建一個新的單元格,并將指定的系列填充到其中):

            ' 創建一個包含圖像集合的單元格。
            Dim cell As MedicalViewerMultiCell = New MedicalViewerMultiCell()
            ' 加載該圖像集合。
            Load2DCell(cell)
            //創建一個包含圖像集合的單元格。
            MedicalViewerMultiCell cell = new MedicalViewerMultiCell();
            // 加載該圖像集合。
            Load2DCell(cell);

18. 將如下幾行代碼添加到InitClass()方法的末尾(這將創建一個新的單元格,并將一個被稱為定位器的幀填充到其中):

            ' 創建一個包含定位器的單元格。
            Dim localizerCell As MedicalViewerMultiCell = New MedicalViewerMultiCell()
            ' 加載該定位器。
            LoadLocalizer(localizerCell)
            // 創建一個包含定位器的單元格。
            MedicalViewerMultiCell localizerCell = new MedicalViewerMultiCell();
            // 加載該定位器。
            LoadLocalizer(localizerCell);

19. 現在,將這兩個單元格(系列單元格和定位器單元格)添加到MedicalViewer。為了做到這一點,請將如下這幾行代碼添加到InitClass()方法的末尾:

            ' 將以上的多幀單元格添加到MedicalViewer。
            viewer.Cells.Add(cell)
            ' 將以上的定位器單元格添加到MedicalViewer。 
           viewer.Cells.Add(localizerCell)
            // 將以上的多幀單元格添加到MedicalViewer。
            viewer.Cells.Add(cell);
            // 將以上的定位器單元格添加到MedicalViewer。
            viewer.Cells.Add(localizerCell);

20. 最后,您需要同時啟用這兩個單元格的基準線。為了做到這一點,您只需要將以下這幾行代碼添加到InitClass()方法的末尾:

            ' 在定位器圖像中啟用基準線。
            cell.ReferenceLine.Enabled = True
            ' 在圖像集合中啟用基準線。
            localizerCell.ReferenceLine.Enabled = True
            // 在定位器圖像中啟用基準線。
            cell.ReferenceLine.Enabled = true;
            // 在圖像集合中啟用基準線。
            localizerCell.ReferenceLine.Enabled = true;

21. 如果您運行該程序,現在您將看到兩個單元格:一個上面繪制有一條垂直線,而另外一個上面繪制有一條水平線。

關于其他產品的更多信息,請查看產品詳情。

文自:葡萄城

掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
利記足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 真人boyu·博魚滾球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 最大網上PM娛樂城盤口(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規雷火競技官方買球(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 雷火競技權威十大網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) boyu·博魚信譽足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 權威188BET足球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規188BET足球大全(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 国产综合亚洲欧美日韩一区二 | 精品无人区一区二区三区 | 国产美女自慰在线观看 | 白丝jk女仆爆乳自慰喷水流白浆 | 国产aaa午夜激情 | 精品国产高清在线拍 | 丰满人妻被黑人中出849 | 69国产精品成人无码免费视 | 国产经典自拍一区 | 国产欧美va天 | 高潮流白浆喷水正在播放 | 加勒比中文无码字幕 | 国产毛片女人高潮叫声 | 国产做a爰片久久毛片 | 国产孕妇福利3在线观看 | 国产精品亚洲精品青青青 | www内射国产在 | 国产一区二区三区四区五区不卡 | 国产成人精品综合久久久久 | 国产精品国色综合 | 国产日韩欧美一区二区三区 | 国产av福利久久精品 | 精品少妇无码一区二区三区免费 | 国产午夜激无码 | 国产精品一区二区三区三洲欧洲 | 91精品综合久久久久五月天 | 激情视频在线观看国产一区 | 国产69精品久久久久乱码 | 国产a网站 | 国产国产成人久久精品 | 精品视频精品国产免费视 | 91制片厂果冻星空传媒科幻 | 精品国产一区二区三区av性 | 国产韩国精品一区二区三区 | 国产高清视频在线观看无缓冲 | 国产精品亚洲av无人区一区 | 国产成人亚洲精品无码v大片 | 国产精品亚洲美女 | 国产一区二区三区在线免费 | 国产成人精品第一区二区 | 国产a级毛片久久久精品毛片 | 2025精品久久久久久中文字 | 国模丽丽啪啪一区二区 | 91久久视频平台是否值得尝试 | 91麻豆精品国产自产在线 | 国产品欧美日产在线 | 国产av日韩av另类 | 国产在线高清理伦片a电影 国产在线高清仑片a | 国产av毛片网站 | 国产精品免费aⅴ片在线观看 | 黑人巨大精品欧美一区二区蜜桃 | 国产一级av免费观看在线 | 国产精品乱码一区二区 | 国产成年人免费黄色视频 | 高清偷自拍亚洲精品三区 | 精品久久久久久中文字幕无码软件 | 国产精品免费久久久久电影院 | 国产不卡在线观看视频 | av无码午夜福利一区二区三区 | 国产末成年av在线播放 | 白丝乳交内射一二三区 | 国产91久久综合 | 国产精品视频观看裸模 | 国产91丝袜在线播放九色 | 97色小说天天射免费视频 | 国产一区二区三区免费大片天美 | 国产v片精品在线播放 | 精品人妻中文字幕 | 精品无码一区二区三区免费看 | 国产三级精品视频 | 国产自产一区二区三区视频在线 | av每日更新在线看 | 成人精品视频一区二区三区尤 | 国产成人高清精品亚洲 | 国产精品va无码一区二区三区 | 91国内精品 | 91女神娇喘 | 国产中文字幕在线播放网站 | ts人妖国产在线观看 | 激情欧美日韩一区二 | 国产成人免费永久播放视频平台 | 国产成人激情五月 | 国产欧美日韩综合精品久久一区 | 国产午夜精品理论 | 91高清免费国产自产 | 国产精品亚洲一区二区无码色 | 精品国产亚洲第一区二区三区 | 国产片婬乱一级毛片视频1 国产片婬乱一级毛片丫丫 国产片婬乱一毛片a | 国产成人电影在线观看 | 国产成人精品一区二区不卡 | 精品一区二区三区高清免费观看 | 国产精品喷潮在线观看 | 成人国产精品秘久久久剧情紧凑 | 成人无码免费午夜福利在线看片 | 精品无码久久久久久久久借妻 | 国产福利片无码区在线观看 | 国产午夜精品美女视频 | 国产精品区一区第一页 | 国产无码精品 | 国产三级级在线观看大学生 | 大尺度毛片免费看 | 成人无码aa精品一区 | 国产aⅴ激情无码久久 | 国产无码中文字幕在线观看 | 精品久久久久久无码专区 | 国产在线91精品 | 国产高清精品自拍av | 国产一区二区三区免费赤裸裸 | 成人无码精品一区二区在线 | 国产嫖妓风韵犹存对白 | 国产精品一级毛片不卡视 | 国产麻豆一精品一av一免费软件 | 精品日韩一区精品日韩国产 | 国产精品免费观看在线观看 | 国产真实乱免费高清视频 | 精品午夜国产人人福利一区 | 91国产日韩制服在线一区 | 91久久国产最好的精华液 | 国产主播在线大尺度系列 | 91亚洲一区二区在线 | 国产艳情熟女视频 | 成年午夜一级毛片视频 | 国产精品99一区二区三区 | 97人妻免费专区 | 国产精品特级无码免费视频 | 91麻豆精品国产综合久久久 | 国产高清一区二区三区 | 高清不卡在线播放 | 国产丝袜视频在 | 国产高清在线精品一区免费 | 国产国语成人三级丰满激情视频在线 | 成人免费无码大片a毛片 | 国产欧美日韩一区二区三区在 | 国产成人一区二区三区在线视频 | 国产综合亚洲欧美另类久久久精品 | 国产精品一区免费视频播放 | av国片精品有毛 | 国产一区二区在线观看年轻 | av无码国产精品色午夜 | 国产欧美日韩一区二区三区精品 | 成人精品第一区二区三 | 国产午夜精品一区二区 | 国产精品日韩欧美亚洲二区 | 国产精品无码免费专区午夜 | 国产成人无码久久久天美传媒 | 国产无码一区二区 | 99久久精品无码一区二区毛 | 国产精品日韩欧美在线 | 国产肥熟女视频一区二区三区 | 国产成人精品久久久久 | 国产成人午夜 | 国产91精品在线观看 | 国产一区二区三区秘 | 国产成人无码免费视频97 | 福利片在线观看 | 国产精品伦子一区二区三区 | 白洁一区二区三区中文 | aⅴ精品无码 | 国产美女精品视频 | 国产在线观看一区二区三区 | 国产成人精品免费视频大全麻 | 囯产精品视频一区二区三区99 | 91女神精品系列在线观看66 | 国内自拍天天爱 | 国产精品三级视频 | 国产黄色视频 | 国产精品不卡一区二区 | 国产一区二区中文 | 成人精品国产成人亚洲 | 国产精品亚洲αv | 国精产品一区二区三区四区糖心 | av无码免费永久在线观看 | 国产经典三级av在线播放 | 国产精品露脸国语对白 | 国产精品进线69影院在线 | 成人欧美一区二区三区的电影 | 2025国产拍精品系列观看 | 91系列在线观看免费 | 91精品免费 | 91在线国产专区精品 | 国产成人调教在线视频 | 精品国产熟妇aⅴ一区二区 精品国产熟女成人av | 囯产精品一区二区三区乱码 | 国产激情偷乱视频一区二区 | 精品视自拍视频在线观看 | 成人全黄三级视频在线观 | 国产精品国产三级农村妇女 | 国产日韩精品一区二区在线播放 | 99久久亚洲精品日 | 精品少妇无遮挡毛片视频软件 | 国产极品粉嫩馒头一线天图片 | 国产精品杨幂va在线观看 | 国产高清一区二区三区四区五区 | 国产成人最新毛片基地 | 国产午夜无码片在线观看影院 | 国产女王重度视频 | 国产尤物一区在线不卡 | 丰满白嫩大屁股ass 丰满白嫩的大屁股xxxxx视频 | 国产粗口调教在线播放 | 国产精品一区二区三区视频 | 黑人巨大精品欧美一区二区蜜桃 | 91极品尤物国产18 | 国产麻豆精品久久久 | 国产三级在线现免费观看伊人 | 91国内揄拍国内精品情侣对白 | 18禁男女爽爽爽午夜网站免费 | 国产亚洲综合一区二区在线 | 国产ww久久久久久久久久 | 91欧美激情欧美性爱综合 | 国产高清一区二区三区视频 | 国产欧美日韩资源在线观看 | 国产免费高清在线视频观看网 | 国产区人妖另类 | 精品国产乱码aaa一区二区 | 国产av毛片影院精品资源 | 国产精品亚洲无码第一页 | 精品国产sm最大网站起碰 | 国产午夜福利在线观看在 | 91久久午夜无 | 国产成人综合亚洲精品 | 国产在线精品成人 | 国产成人综合精品 | 国产欧美日韩中文久久 | 国产成人v一区二区毛片 | 国产精品无码专区在线观看 | 91免费精品国自产拍在线不卡 | 国产午夜精品久久久久免费视频 | 国产爆乳合集在线观看视频 | 国产高清内射视频 | 成人无码精品久久小说 | 国产成本人免费视频 | 91久久国产高清 | 国产av一区二区三区久久久综 | 91精品手机国产在线破解版 | 国产精品国产三级国av麻豆 | 韩国精品无码一区二区三区视频播放 | 国产午夜在线视频观看 | 国产麻豆视频免费在线观看 | 国产成人成网站在 | 2025中文字幕无码专区 | 成人精品天堂一区二区三区 | 国产在线观看免费av站 | 国产av人人夜夜澡人人爽麻豆 | 91与国产超碰在线观看 | 成人国产三级 | av无码精品久久久久精品免费 | 国产成年女人特黄特色大片免费 | 国产午夜精品一二区 | 国产美女口爆 | 国产欧美成人一区二区三区 | 国产91l在线播放 | av中文字幕综合 | av无码动漫一区二区三区精品 | 国产在线欧美中文字幕免费观 | 91麻豆精品国产综合久久久 | 国产欧美精品国产第一区 | 精品麻豆一二三区 | 国产精品一区二区av在线观看 | 国产一区二区三精品久 | 国产成人精品免费 | 国产成人精品男人的天堂下载 | 成人a级视频在 | 国产美女精品视频 | 国产在线视频玛雅视频 | www成人网 | 91精品国产91久久久久福利 | 国产成人精品一区二区三 | 91麻豆精品国产一区色欲 | 成在人线av无码免观看麻豆 | 成人亚洲a片v一区二区三区麻豆 | 二区三区手机在线观看 | 丰满少妇又爽又紧又丰满在线 | 精品国产免费人成高清 | 国产白嫩在线观看视频 | 2025国自产拍国偷 | 国产精品一区二区四区 | 国产精品午夜无码av天美传 | av无码人 | 精品国产一区二区三区19 | 国产最大成人亚洲精品 | 91精品国产乱码久 | 国产午夜毛片v区一区二区三区 | 国产精品午夜无码av体验区 | 国产成人精品日本亚洲专一区 | 国产一二三区四区20 | 99久久精品无码一区二区毛片 | a级无遮挡超级高清 | 国产麻豆剧传媒精品 | 成人三级av免费 | 2025中文字幕日韩色视频 | 国产在线观看自拍日本 | 成人午夜看黄在 | 国产一区二区黄色传媒 | 成人无码区免费a片www | 国产精品无码久久诱惑 | 国产成人精品一二三区 | 国产精品一区二区久久久久久 | 国产成人涩涩屋视频在线 | 国产情趣免费视频在线观看 | 91麻豆最新在线人成免费观看 | 国产一二三精品无码不卡在线 | 国产一区亚洲一区在线观看 | 精品麻豆福利片国产免费观看 | 国产超薄丝袜脚交视 | 国产福利资源在线 | 国产精品白浆一区二小说 | 国产日韩午夜毛片电影完整版 | 91天堂一区二区三区在线观看 | 精品国产一区二区二三区在线观看 | 国产成人精品本亚洲 | www.中文字幕在线观看 | 精品亚洲a∨无码一区二区三区 | 国产精品社 | 精品熟女日韩中文十区 | 99精品一级欧美片免费播放 | 国产成人综合亚洲精品 | 国产一区二区高清在线播放 | 国产精品成人va在线观看 | 国产电影一区二区三 | 国产亚洲日韩欧美另类第八页 | 国产欧美日韩综合亚洲 | 精品一区二区三区久久久久网站 | 国产一区二区无码视频 | 国产一区二区在线观看入口 | 国产精品国产三级国产av品爱网 | 91精品宅男在 | 国产成人欧美综合在线影院 | 国产三级农村妇女野外 | www夜片内射视频日韩 | 国产毛片女人高潮叫声 | 国产无码精品 | 国产成人无精品久久久久国语 | 国产精品三级av及在线观看 | 国产在线精品国自产拍影院同性 | 国产精品欧美一区二卡 | 国产成人免费高潮激情视频 | 国产午夜精品久久久久婷婷 | 韩国免费a级毛片 | 国内精品无码视频在线 | 成人h动漫精品一区二区器材 | 东京热人妻系列无码专区 | 91高清色网一二三区 | 国产白丝jk制服在线视频 | 91露脸熟女四川熟女在线观看 | 国产91成人精品亚洲精品 | 爆乳邻居肉欲中文字幕 | 国产一区二区在线观看动漫 | 国产av片国产| 高潮流白浆喷水正在播放 | 国产一二三区四区2025 | 国产高清无码免费 | 国产在线拍揄自揄视频不卡99 | 国产精品白浆在线观看无码专区 | 国产午夜草莓视频在线观看 | 国产精品美女久久 | 国产一区高清视频 | 国产交换一区二区三区 | 精品国产91亚洲国模持一区 | 国产精品午夜小视频观看 | 国产精品无码一区二区三区毛片 | 国产精品美女久久福利网站 | 国产精品免费久久久久久久久 | 国产精品高潮森林久久av无码 | 91在线国产欧美 | 国产盗摄精品一区 | www.日本精品 | 国产精品毛片在线更新 | 国产麻豆激情视频在线观看 | 99久久精品国产综合 | 成人无码www免费视频樱花 | av大片在线观看免费 | 国产尤物av尤物在线观看 | 东京热加勒比无码少妇 | 激情高潮大全套草草 | 国产午夜在线观看视频播放 | 国产a级毛片久久久毛片精片 | 国产高清在线观看又黄又 | av片无码久久尤物 | 精品国产三级久久久久三级 | 国产成人aⅴ片在线 | 国内精品久久人妻系列 | 国产高清在线视频一区二区三区 | 国产福利一区二区在线视频 | 国产一区二区在线观看无码 | 国产一区二区三区视频 | 国产午夜人成视频在线观看 | av天堂手| 国产在线观看中文字幕 | 爆乳无码系列肉感 | 国产精品欧美一区二区三区不卡 | 国产视频一区二区三区 | 国产三级在线观看中文 | 国产秘麻豆果冻传媒 | 国模自拍日韩在线播放视频网站 | 91久久夜色精品 | 精品无码国产一区二区一区51安 | 精品无码91久久精品无码一区 | 国产女王女调教另类调教在线 | 成人综合天天影院 | 国91视在线观看 | 国产a国产国产片 | 成人无码区免费视频网站蜜臀 | 国产91无码免费一区二区三区 | 国产精品欧美一区二卡 | 精品国产aⅴ一区二区三区v免费 | 国产午夜无码专区喷水 | 国产微拍精品一区一再猛点 | 91精品久久久久无码午夜福利 | 国产超碰人人做人人爰 | 国产av无码专区亚洲a∨毛片 | 国产一在线精品一区在线观看 | 国产福利小视频91 | 国产三级高清午夜羞羞视频 | 国产末成年毛片aⅴ在线 | 精品国产美女久久网 | 国产熟女性爱 | 国产高级桑拿会所在线看 | 国产欧美日韩欧美特级 | 国产精品毛片一区二区三区在 | 国产超碰av人人做人人爽 | 2025届高三日语一轮复习 | 高朝久久久久久久久久 | 国产色无码精品视频国产 | av无码精品一区二区三区四区 | 91在线最新精品国产 | 国产多人| 丰满人妻被黑人中出849 | 成人黄网18免费观看的网站 | 国产在线成人一区二区 | 高清欧美一区二区免费影视 | 国产亚洲中文日 | 91午夜精品亚洲一 | 高清视频一区二区三区 | 国精品午夜福利视频不卡 | 国产午夜精品久久精品电影 | 91免费视频在线观看一区影视 | 国产偷录视频叫床高潮 | 国产av国片精品jk制服 | 国产午夜精品自在自线专区 | av中文字幕精品一区二区久久久 | www国产精品| 2025久久超碰国产精品最新 | 国产精品一区成人精品五月 | 3d动漫精品啪啪一区二区中文 | 国产成人无码精品久久久小说 | 成人国内精品久久久久一区 | 国产熟女一区二区三区十视频 | 国产一线二线三线女 | 国产成人精品日本亚洲专一区 | 国产在线观看麻豆91精 | 国产精品成人一区二区三区视频 | 国产欧美第一区二区 | 国产高清av一级av毛片 | 国产va免费精品高 | 国产高潮流白浆喷水免费视频 | 国产av无码专区亚洲a∨毛片 | 国产高潮呻吟无码精品av | 成人一区二区三区 | a级毛片免费全部播放 | 国产一区欧美二区影视播放 | 99久久国产主播综合精品 | 2025亚洲中文字幕 | av无码人妻中文字幕 | 国产精品沙发午睡系 | 国产av网站一区二区三区 | 国产999视频在线播放 | 国产刘玥在线视频观看 | 国产av福利片一二三四区 | 丰满少妇乱子伦精品无码专区 | 国产精品午夜无码av天美传 | 囯产精品一区二 | 国产av一区二区三区最新精品 | 东京热久久精品视频 | 国产午夜激无码v毛 | 99国产精品热久久久久久 | 韩国在线观看一区二区三区 | 国产黄片三级视频 | 国产成人精品一二三区 | 国产一区二区三区精品99久久 | 国产欧美日韩一区二区三区在 | 国产91精品 | 国产人妖xxxx做受视频 | 18禁黄网站无码无遮挡 | 91无码人妻丰满熟妇区五十路 | 岛国精品一区免费视频在线 | 国产一级无码视频在线观看 | 国产在线第三页 | 国产免费露脸视频在线 | 成人午夜大片免费看爽爽爽 | 91福利电影 | 91成人在线观看无码 | 18禁无码av免费不卡 | 91精品国产高久久久成人 | 国产综合成人久久大片 | 国产福利秒拍视频大尺度 | 丰满少妇人妻久久久久久 | 国产一区高清三级久色成人 | 国产盗摄视频一区二区三区 | 精品一区二区三区东京热 | 国产高跟鞋丝袜在线观看 | 国产精品国产三级国 | 91精品久久香蕉国产线看观看 | 国产真人真事一级毛片 | 国产午夜精品美女视频 | 国产精品无码专区免费不卡 | 国产精品动漫在线网站 | 18禁裸男晨勃露j毛免费观看 | 国产91精彩在线观看 | 国产美女做a免费视频软件 国产美日韩精品久久 | 精品国产免费第一区二区三区日 | 国产自在自线午夜精品视频在 | 成人国产亚洲日韩欧美亚州 | 精品熟妇av一区二区三区四区 | 国产精品v毛片免费软件 | 91在线免费精品观看 | 国产1024在线观看 | 国产成人免费影院在线 | 精品无码av无码专区成人毛片 | 成人在线91日韩手机视频 | 国产精品嫩草视频成人 | 国产精品高潮69情节跌宕起伏 | 91无码人妻精品一区二区蜜桃 | 国产三级级在线电影 | 精品三级一区二区 | 国产亚洲一区二区三区四区五区 | 国产午夜精品毛片不卡 | 99精品免费久久久久久久 | 国产精品毛片aⅴ一区二区三区 | 精品久久久久久无码中文字幕 | 国产午夜成福利在线观看 | 国产肥白大熟妇bbbb视频 | 国产精品人人操人人爽 | 成人欧美一区在线视频在线观看 | 2025最新电视剧电影排行榜 | 国产成人鲁鲁免费视频 | 国产成人a无码短视频 | 高潮无码 | av天堂精品久久 | 国产精品美女久久久网站动漫 | 国产亚洲精aa在线观看香蕉 | 精品国产欧美另类一区 | 国产精品免费观看调教网 | 国产午夜无码片在线观看影视 | 国产99精品视频一区二区三区 | 国产欧美产日产综合在线 | 精品国产欧美另类一区 | 国产一区在线观看视频网站 | 91精品欧美一区二区三区 | 国产女同互慰高潮流水视频 | av无码精品一区二区三区宅 | 国产古装又黄a片在 | 精品国产aⅴ无码一区二区 精品国产aⅴ一区二区三区 | 高清亚洲日韩av国产精品成人无 | 国产av激情久久无码天堂 | 国产一区二区四区在线 | 国产成人午夜福利高清在线 | 国产a级毛多妇女视频 | 国产一区二区三区精品视频 | 国产a免费观看 | 91黄色视频| 国产一区无码 | 国产精品二区中文 | 国产成人精品亚洲午 | av中文字幕潮喷人妻系列 | 国产精品夜色电影 | 国产av永久精品无码 | 国产熟睡乱子伦视频观看看 | 国产精品毛片高清在线完整版 | 国产极品乱码在线观看 | 成人精品一区二区三区免费视频 | 高清无码电影免费专区 | 国产精品大屁股白浆一区二区 | 国产91久久九九免费精品无码 | 成午夜免费视频在线观看 | 国产毛片一区二区三区视频 | 国产精品一区2区三区内射 国产精品一区91 | 国产午夜福利不卡在线观看视频 | 91久久精品国产亚洲 | av无码国产永久播放 | 国产精品日韩欧美在线第3页 | 国产精品欧美亚洲大片在线观看 | 99久久久久国产精品专区无码 | 国产产无码乱码精品久久鸭 | 国产成人精品无码一区二 | 国产在线观看不卡免费高清 | 国产一区视频在线播放 | 丰满人妻久久中文字幕免费 | 99国产精品国产精品九九 | 国产精品毛片v一区二区三区 | 国产精品女人呻吟在 | 国产aⅴ视频一区二区三区 国产aⅴ天堂无码一区二区三区 | 成人午夜免费观看 | 成人国产一区二区精品小说 | 国产中文无码av无码 | 成人在线免费观看 | 国产亚洲日韩精品超碰 | 国产精品亚洲一区二区在线 | 精品福利一区二区三区在线观 | 国产毛片a级久久久不卡精品 | 国产妇少水多毛多高潮a片小说 | 国产尤物精品自在拍视频首页 | 2025亚洲中文字幕在线第99 | 国产成人av无码一二三区 | 18禁黄网站禁片免费观看国产 | 加勒比东京热久久久 | 国产精品艺校美女校花在线 | 国产探花在线精品一区二 | 国产精品国产高清国产专区720p | 国产成人a亚洲精v品无码软件下载 | 国产萌白酱喷水视频在线播放 | 国产精品成v人在线视午夜片 | 9a1v精品少妇一区二区三区 | 国产成人免费网站在线观看 | 国产精品国三级国产av视色 | 国产午夜精品理论片久久久 | 国产精品亚洲aⅴ片 | 精品国产美女福到在线不卡 | 精品国内在视频线最新 | 97午夜理 | 高潮毛片无遮挡高清免费软件 | 国产女主播在线播放一区二区 | 国产一区不卡 | 1024国产精品二区 | 国产精品无码秘入口草莓成人 | 国产亚洲欧美在线播 | 果冻传媒视频在线播放 | 国产区精品尤物柚木在线 | 东京热一区二区三区无码视频 | 成人国产在线不卡视频 | 国产麻豆91传媒入口 | 国产三级电影免费看 | 国产交换一区二区三区 | 国产日韩无码中文字幕在线综合 | 国产午夜精品美女视频露脸 | 国产成人涩涩涩视频在线观 | 国产精品一区第二页尤自在拍 | av永久无码精品桃花岛知道 | 激情欧美日韩一区二区 | 国产熟女高潮精选视频 | ww国产内射精品后入国产 | 国产成人午夜在线视频极速观看 | 精品无码国产一区二区 | 国产av永久无码精品网站 | 国产午夜福利电影免费在线观看 | 国产真人一级a爱做片 | 国产欧美丝袜在线二蜜芽tv | 国产欧美另类久久久品 | 综合精品国产二区无码 | 国产综合激情在线亚 | 99国产在线看片 | 国产一区免费看久久无码精品 | 国产女主播高潮在线喷水 | 国产护士在病房av做爰小说 | 国产成人高清在线观看 | 国产蜜桃tv | 国产精品v无码a片在线看 | 国产成人av性色在线影院色戒 | 加勒比东京热无码av在线 | 丰满熟妇啪啪软件 | 国产av午夜影院 | 国产成人高清精品免费观看 | 成人无码在线视频 | 99国产在线播放 | 国产一区高清三级久色成人 | 国产欧美日韩综合自拍 | 国产福利视频在线观看福利 | 国产无码免费视频在线 | 国产成人调教视频在线观看 | 国产高清一区二区三区免费视频 | 国产亚洲中文久久网久久综合 | av在线播放每日更新 | 国产成人免费高清直播软件 | a级毛片高清免费视频播放 a级毛片高清免费视频就看 | 国产精品v日韩精品v欧美精品v | 国产a网欧美午夜性 | 国产午夜成福利在线观看 | 国产成人精品国产成人亚洲 | 成人免费毛片一区二区三区 | 18禁午夜福利 | 国产va在线观看 | 国产一区二区不卡视频 | 成人毛片高清视频观看 | 粉嫩av久久一区二区三区王玥 | 国产午夜91福利一区二区 | 精品人妻毛片免费视频 | 国产精品日韩欧美在线观看 | 国产无码最新上传在线观看 | 国产极品粉嫩美女在线播放 | 成人夜色视频网站 | 18禁黄网站男男禁片免费观看 | 国产在线观看精品一区二区三区 | 国产精品一区二区日韩av | 成人一区在线观看 | 国产成人精品日本亚洲直播 | 国产成人精品日本亚洲网站 | 国产夫妻一区二区 | 国产精品毛片久久蜜月a√ 国产精品毛片天天看片 | 精品一区heyzo在线播放 | 国产高潮呻吟无码精品av | 国产毛1卡2卡3卡4卡免费观看 | 高清无码免费在 | 国产精品免费看欧美久久久久 | 国产在线精品国自产拍影院同 | 国产精品无码国模私拍视频 | 国产欧美日产一区二区三区 | av日产天天射 | 国产成人精品午夜视频免费 | 国产黄色老熟女中文视频 | 国产成人午夜精华液 | 97色小说天天射免费视频 | av无码一区在线观看 | 国产av无码专区亚洲av人妖 | 成人三级理论电影在 | 国产午夜精品美女免费大片 | 国产av无码专区亚洲av果冻传媒 | 国产无码黄色视 | 国产av无码一区二区三区dv | 国产成人综合vr | av在线电影免 | 99国产在线国语精品2025 | 国产一区一二区高清不卡 | 91成人在线 | 国产成人av电影在线观看浪潮 | 国产精品香蕉人多人在线观看 | 国产成人无码专区 | 国产嫩草在线观看视频 | 国产高清午夜人成在线观看 | 91精品导航在线观看 | 91无码人妻一区二区三区在线看 | 国产精品白浆无码流出视频 | 国产成在线观看免 | 成人国产一区二 | 成人毛片一区二区 | 精品视频一区二区三区四区戚薇 | 国产福利精品一区二区 | 国产一级内谢a级高清毛片 国产一级内谢a级高清毛片古装 | 国产免费无码v片在线观看不卡 | 高清无码在线观看 | 精品国产免费人成电影在线看 | 国产精品亚洲伦理在线 | 国产激情视频在线观看免费播放 | 国产成人精品无码免费播放国语 | 极品国产主播粉嫩在线观看 | 国产精品久av福利在线观看 | 国产成年女人人aa人视频高清 | 国产一在线精品一区 | 精品日韩欧美一区在线播放不 | 国产高清成免费视频 | 97无码免费人妻超级碰碰夜夜 | 国产成人综合久久亚洲精品 | 91久久国产 | 国产欧美日韩另类在线 | 国产美女精品自在线拍免费 | 国产精品制服丝袜一区 | 国产美女全黄a一级视 | 国产成人av无码永久免费 | 国产精品毛片一区二区三 | 国产丝袜在线精品丝袜 | 91麻豆精品国产自产在线观 | 国产精品成人免费观看 | 99久久国产热精品 | 福利姬液液酱喷水 | 国产制服丝袜免费视频 | 成年女人看片免费视频播放人 | 精品国产av无码一区二区三区 | 国产a级毛片久久久精品毛片 | 国产精品成人综合网 | 国产成人毛片一区二区 | 国产在线无码视频一区二区三区 | 精品视频日本 | 国产爆乳无码在线观看 | 国产真实乱人偷精品人妻 | 国产韩国日本欧美在 | 国产白洁有声在线播放 | 国产福利在线观看永久视频 | 国产高清在线观看麻 | 高潮流白浆喷水正在播放 | 国产熟女一区二区三区五月婷 | 国产成人亚洲精品无码av软件 | 成人在线一区二区三区 | 91精品国产福利在线 | 成人毛片在线免费在线 | 91国自产精品中文 | 国内外精品激情刺激在线 | 爆乳熟妇一区二区三区 | h无码精品动漫在线观看免费 | 91国在线啪精品一区 | 囯产精品一区二区免费在线观看 | 国产在线欧美日韩色 | 国产精品欧美久久久天天影视 | 国产精品羞羞无码久久久 | 精品国产又粗又大又黄又硬 | 国产精品好爽好紧好 | 国产萝控精品福利视频免费观看 | 91麻豆精品国产自产在线观看一 | 国产成人免费 | 国产精品一级av在线播放 | 国产精品欧美日韩一区在线播放 | 国产91专区一区二区 |