欧美日韩亚-欧美日韩亚州在线-欧美日韩亚洲-欧美日韩亚洲第一区-欧美日韩亚洲二区在线-欧美日韩亚洲高清精品

金喜正规买球

logo LEADTOOLS使用教程

LeadTools 使用基準(zhǔn)線


在本教程中,您將學(xué)習(xí)到如何在MedicalViewer 單元格中顯示基準(zhǔn)線。

1. 請(qǐng)您打開(kāi)Visual Studio2005或一個(gè)更高的版本。

2. 從“文件”菜單中選擇“項(xiàng)目”。

3. 然后會(huì)出現(xiàn)一個(gè)新建項(xiàng)目對(duì)話框。

4. 從“項(xiàng)目類(lèi)型”中展開(kāi)“其他語(yǔ)言”節(jié)點(diǎn),然后單擊在“Visual C#” 節(jié)點(diǎn)上。

5. 從該對(duì)話框左側(cè)的模板列表中,選擇“Windows窗體應(yīng)用程序”。

6. 在“項(xiàng)目名稱”字段里輸入該項(xiàng)目的名稱“使用基準(zhǔn)線”,然后選擇“確定”。

7. 選擇“確定”來(lái)創(chuàng)建該項(xiàng)目。

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

9. 在“解決方案資源管理器”的樹(shù)型圖中,右鍵單擊“引用”節(jié)點(diǎn),然后選擇“添加引用”。

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

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

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

            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中,創(chuàng)建一個(gè)新的方法InitClass() 。并將以下代碼添加到該方法:

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

13. 請(qǐng)從Form1的構(gòu)造函數(shù)中調(diào)用該方法InitClass,并將該調(diào)用放置于InitializeComponent()之后。

14. 運(yùn)行該程序,您將會(huì)看到一個(gè)2x2布局。

15. 注意:在接下來(lái)的步驟中,您將需要具備一個(gè)DICOMDIR文件。我們可以提供DICOMDIR示例文件,您可以點(diǎn)擊這里進(jìn)行下載。如果您想要了解有關(guān)如何在DICOMDIR中構(gòu)建3D對(duì)象的更多相關(guān)詳細(xì)信息,請(qǐng)參閱這一章“如何加載DICOMDIR來(lái)創(chuàng)建一個(gè)3D對(duì)象”。

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

請(qǐng)下載示例DICOMDIR,并將其內(nèi)容解壓縮到此文件夾:C:\Leadtools_DICOMDIR。

16. 請(qǐng)將如下代碼添加到Form1類(lèi)。該代碼可用于從DICOMDIR中加載圖像,將它們進(jìn)行排序,并從中提取所有的有用信息:

            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
            ' 您需要找到使用了科目實(shí)例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
            ' 您需要找到使用了系列實(shí)例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數(shù)據(jù)集信息,并將其保存到MedicalViewerImageData類(lèi)的一個(gè)新實(shí)例中。
            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所指定的系列,而這兩個(gè)UID來(lái)自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
              ' 在這里,該程序?qū)?huì)對(duì)包含指定的studyInstanceUID的科目進(jìn)行搜索。 
              _studyElement = FindStudy(ds, studyInstanceUID)
              ' 在這里,該程序?qū)?huì)對(duì)包含指定的seriesInstanceUID的系列進(jìn)行搜索。
              _seriesElement = FindSeries(ds, _studyElement, seriesInstanceUID)
              ' 請(qǐng)創(chuàng)建一個(gè)MedicalViewerSeriesManager的新實(shí)例。它將被用于對(duì)圖像進(jìn)行排序,以便創(chuàng)建正確的3D對(duì)象。
              _seriesManager = New MedicalViewerSeriesManager()
              ' 請(qǐng)創(chuàng)建一個(gè)MedicalViewerImageData的陣列。該類(lèi)將被用于保存幀信息。而該信息將被用于對(duì)圖像進(jìn)行排序。
              _imageDataList = New List(Of MedicalViewerImageData)()
              Dim dicomDataSet As DicomDataSet
              Dim imageIndex As Integer
              Dim imagePath As String
              Dim echoNumber As Integer = 0
              ' 現(xiàn)在,該程序?qū)?duì)該系列中的每一幀進(jìn)行審查。
              imagePath = GetFirstImageName(ds, _seriesElement, directoryPath, imageElement)
              imageIndex = 0
              Do While imageIndex < count
                Try
                   ' 該系列中的每個(gè)圖像都將被加載。
                   dicomDataSet = New DicomDataSet()
                   dicomDataSet.Load(imagePath, DicomDataSetLoadFlags.None)
                   ' 該程序可以加載它的信息,并將其保存到MedicalViewerImageData類(lèi)的一個(gè)新實(shí)例中。
                   AddImageToImageArray(dicomDataSet, imageIndex, imagePath, echoNumber)
                   dicomDataSet.Dispose()
                   ' 跳轉(zhuǎn)到下一個(gè)圖像。
                   imagePath = GetNextImageName(ds, directoryPath, imageElement)
                Catch exception As System.Exception
                   System.Diagnostics.Debug.Assert(False, exception.Message)
                   Throw
                End Try
                 imageIndex += 1
              Loop
              ' 根據(jù)它的數(shù)據(jù)對(duì)這些圖像進(jìn)行排序。
              _seriesManager.Sort(_imageDataList)
              DicomEngine.Shutdown()
              Return _seriesManager
            End Function
            Private Sub LoadLocalizer(ByVal cell As MedicalViewerMultiCell)
              ' 啟動(dòng)允許加載各種圖像的編解碼器。
              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)
              ' 設(shè)置以下三行代碼非常重要。否則,可能會(huì)發(fā)生基準(zhǔn)線結(jié)果錯(cuò)誤。
  ' 設(shè)置定位器的圖像位置。             
 cell.SetImagePosition(0, _seriesManager.Localizers(0).LocalizerData.ImagePosition, True)
              ' 設(shè)置定位器的圖像方向。
              cell.ImageOrientation = _seriesManager.Localizers(0).LocalizerData.ImageOrientationArray
              ' 設(shè)置定位器的像素間隔。
              cell.PixelSpacing = _seriesManager.Localizers(0).LocalizerData.PixelSpacing
              ' 設(shè)置定位器的幀引用UID。如果系列和定位器具有相同的引用UID的話,這樣就可以在它們之間創(chuàng)建一條基準(zhǔn)線。
              cell.FrameOfReferenceUID = _seriesManager.Localizers(0).LocalizerData.FrameOfReferenceUID
            End Sub
            Private Sub Load2DCell(ByVal cell As MedicalViewerMultiCell)
              ' 啟動(dòng)允許加載各種圖像的編解碼器。
              Dim _codecs As RasterCodecs = New RasterCodecs()
              ' 加載CT DICOMDIR,并返回排列好的圖像集合。
              output = Load_James_CT()
              ' 循環(huán)處理這些圖像,并將它們一個(gè)接一個(gè)地添加到最終的圖像。
              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
              ' 設(shè)置以下這幾行代碼非常重要。否則,可能會(huì)出現(xiàn)基準(zhǔn)線結(jié)果錯(cuò)誤。
              index = 0
              Do While index < depth
                ' 設(shè)置每幀的圖像位置。
                cell.SetImagePosition(index, _seriesManager.Stacks(0).Items(index).ImagePosition, False)
                 index += 1
              Loop
              ' 請(qǐng)對(duì)該系列的圖像方向進(jìn)行設(shè)置,且它只需被設(shè)置一次,因?yàn)樗械膸仨毦哂邢嗤姆较蛑怠?
              cell.ImageOrientation = _seriesManager.Stacks(0).Items(0).ImageOrientationArray
              ' 請(qǐng)對(duì)該系列的像素間隔進(jìn)行設(shè)置,且它只需被設(shè)置一次,因?yàn)樗械膸仨毦哂邢嗤南袼亻g隔值。
              cell.PixelSpacing = _seriesManager.Stacks(0).Items(0).PixelSpacing
              ' 請(qǐng)對(duì)該系列的幀引用UID進(jìn)行設(shè)置。如果該系列和定位器具有相同的引用UID的話,這將在它們之間創(chuàng)建一條基準(zhǔn)線。
              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;
            // 您需要找到使用了科目實(shí)例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;
            }
            // 您需要找到使用了系列實(shí)例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數(shù)據(jù)集信息,并將其保存到MedicalViewerImageData類(lèi)的一個(gè)新實(shí)例中。
            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所指定的系列,而這兩個(gè)UID來(lái)自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;
               // 在這里,該程序?qū)?huì)對(duì)包含指定的studyInstanceUID的科目進(jìn)行搜索。
               _studyElement = FindStudy(ds, studyInstanceUID);
               // 在這里,該程序?qū)?huì)對(duì)包含指定的seriesInstanceUID的系列進(jìn)行搜索。
               _seriesElement = FindSeries(ds, _studyElement, seriesInstanceUID);
               // 請(qǐng)創(chuàng)建一個(gè)MedicalViewerSeriesManager的新實(shí)例。它將被用于對(duì)圖像進(jìn)行排序,以便創(chuàng)建正確的3D對(duì)象。
               _seriesManager = new MedicalViewerSeriesManager();
               // 請(qǐng)創(chuàng)建一個(gè)MedicalViewerImageData的陣列。該類(lèi)將被用于保存幀信息。而該信息將被用于對(duì)圖像進(jìn)行排序。
               _imageDataList = new List<MedicalViewerImageData>();
               DicomDataSet dicomDataSet;
               int imageIndex;
               string imagePath;
               int echoNumber = 0;
               // 現(xiàn)在,該程序?qū)?duì)該系列中的每一幀進(jìn)行審查。
               imagePath = GetFirstImageName(ds, _seriesElement, directoryPath, out imageElement);
               for (imageIndex = 0; imageIndex < count; imageIndex++)
               {
                  try
                  {
                     // 該系列中的每個(gè)圖像都將被加載。
                     dicomDataSet = new DicomDataSet();
                     dicomDataSet.Load(imagePath, DicomDataSetLoadFlags.None);
                     // 該程序可以加載它的信息,并將其保存到MedicalViewerImageData類(lèi)的一個(gè)新實(shí)例中。
                     AddImageToImageArray(dicomDataSet, imageIndex, imagePath, out echoNumber);
                     dicomDataSet.Dispose();
                     // 跳轉(zhuǎn)到下一個(gè)圖像。
                     imagePath = GetNextImageName(ds, directoryPath, ref imageElement);
                  }
                  catch (System.Exception exception)
                  {
                     System.Diagnostics.Debug.Assert(false, exception.Message);
                     throw;
                  }
               }
               // 根據(jù)它的數(shù)據(jù)對(duì)這些圖像進(jìn)行排序。
               _seriesManager.Sort(_imageDataList);
               DicomEngine.Shutdown();
               return _seriesManager;
            }
            void LoadLocalizer(MedicalViewerMultiCell cell)
            {
               // 啟動(dòng)允許加載各種圖像的編解碼器。
               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);
               // 設(shè)置以下三行代碼非常重要。否則,可能會(huì)發(fā)生基準(zhǔn)線結(jié)果錯(cuò)誤。
               // 設(shè)置定位器的圖像位置。
               cell.SetImagePosition(0, _seriesManager.Localizers[0].LocalizerData.ImagePosition, true);
               // 設(shè)置定位器的圖像方向。
               cell.ImageOrientation = _seriesManager.Localizers[0].LocalizerData.ImageOrientationArray;
               // 設(shè)置定位器的像素間隔。
               cell.PixelSpacing = _seriesManager.Localizers[0].LocalizerData.PixelSpacing;
               // 設(shè)置定位器的幀引用UID。如果該系列和定位器具有相同的引用UID的話,這樣就可以在它們之間創(chuàng)建一條基準(zhǔn)線。
               cell.FrameOfReferenceUID = _seriesManager.Localizers[0].LocalizerData.FrameOfReferenceUID;
            }
            void Load2DCell(MedicalViewerMultiCell cell)
            {
               // 啟動(dòng)允許加載各種圖像的編解碼器。
               RasterCodecs _codecs = new RasterCodecs();
               // 加載CT DICOMDIR,并返回排列好的圖像集合。
               output = Load_James_CT();
               // 循環(huán)處理這些圖像,并將它們一個(gè)接一個(gè)地添加到最終的圖像。
               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;
               // 設(shè)置以下這幾行代碼非常重要。否則,可能會(huì)出現(xiàn)基準(zhǔn)線結(jié)果錯(cuò)誤。               for (index = 0; index < depth; index++)
               {
                  // 設(shè)置每幀的圖像位置。.
                  cell.SetImagePosition(index, _seriesManager.Stacks[0].Items[index].ImagePosition, false);
               }
               // 請(qǐng)對(duì)該系列的圖像方向進(jìn)行設(shè)置,且它只需被設(shè)置一次,因?yàn)樗械膸仨毦哂邢嗤姆较蛑怠?
               cell.ImageOrientation = _seriesManager.Stacks[0].Items[0].ImageOrientationArray;
               // 請(qǐng)對(duì)該系列的像素間隔進(jìn)行設(shè)置,且它只需被設(shè)置一次,因?yàn)樗械膸仨毦哂邢嗤南袼亻g隔值。.
               cell.PixelSpacing = _seriesManager.Stacks[0].Items[0].PixelSpacing;
               // 請(qǐng)對(duì)該系列的幀引用UID進(jìn)行設(shè)置。如果該系列和定位器具有相同的引用UID的話,這將在它們之間創(chuàng)建一條基準(zhǔn)線。
               cell.FrameOfReferenceUID = _seriesManager.Stacks[0].Items[0].FrameOfReferenceUID;
            }

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

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

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

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

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

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

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

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

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

關(guān)于其他產(chǎn)品的更多信息,請(qǐng)查看產(chǎn)品詳情。

文自:葡萄城

掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
亚洲精品高清欧美 | 天天躁恨恨躁夜躁2025 | 青青导航 | 亚洲午夜福利 | 欧美综合亚洲日韩精品区 | 国产盗摄偷窥在线观看 | 亚洲一区二区高清 | 91极品尤物在线观看 | 国产va免费精品高清在线观看 | 亚洲人成网77777色在线播放 | 国产美女一区二区丝袜美腿 | 国产欧美日韩综合精品一区二区 | 第一页欧日韩在线视频 | 国产乱理伦片在线观看夜 | 国产99精品在线观看 | 久青草久青草视频在线观看 | 玖玖免费视频在线观看 | 中日韩精品一区二区三区 | 免费人成视频年轻人在线无毒不卡 | 91精品视频在线观看免费 | 99爱第一视频在线观看 | 亚洲91视频网站 | 亚洲.欧美.中文 | 红桃影视成人免费 | 久热爱精品视频在 | 国产中文字幕免费不卡 | 在线亚洲欧洲日产一区2区 国产成本人三级在 | 日日夜夜精品免费视频779 | 日本欧美一区二区 | 中文字幕亚 | 欧美激情一区 | 精品亚洲成a人app | 国内精品视频免费观看 | 国产大片亚州一 | 日韩一级一欧美一 | 亚洲欧美日韩国产综合专区 | 国产精品久片在 | 日本乱码一区二 | 日韩成人 | 国产福利观看 | 亚洲一区二区三区乱 | 午夜理论片在线观看免费 | 九一国产精品视频 | 99在线观看视频免费精品9 | 国产精品福利自产拍在线观看 | 精品免费播放视频 | 宅男噜噜噜一区二 | 男人插女人下面的视频 | 精品国产午夜福利不卡在 | 成人欧美视频在线观看 | 一级特黄aa | 七十路熟女交尾hd | 亚洲国产精品视频免费观看 | 91国内揄拍国内精品情侣对白 | 午夜美女视频在线 | а√新版天堂资源中文8 | 日韩欧美亚洲一区二区三区四 | 亚洲欧美日韩自偷自拍 | 色猫咪免费人成网站在线观看 | 日本高清视频www夜色资源网 | 精品三级一区二区三区四区 | 美女视频在线永久免费观看 | 国产精品自拍91 | 华人亚洲欧美精品国产 | 欧美精品一区二区三区 | 亚洲国产欧美在线人成app | 国产日韩欧美高清一区二区三区 | 青青草原亚洲之五月婷 | 猫咪免费 | 欧美亚洲国产激情一区二区 | 亚洲的一区二区精品 | 秋霞影视免费播放手机版 | 香蕉电影 | 精品视频一区二区三 | 免费a级片在线观看 | 无人一码二码三码4码免费 91网首页 | 亚洲欧美成α人在线观看 | 91热爆在线精品 | 最新高清电影免费在线观看 | 国产对白普通话视 | 欧美激情一区 | 日本亚洲黑人在线播放 | 羞羞影院午夜男女爽爽 | 激情中文一区二区三区四区 | 亚洲中文字幕 | 国产福利小视频在线免费观看 | 国产欧美va欧美va日韩精品 | 国产欧美日韩精品福利98 | 精品动漫一区二区 | 国产精品高清尿小便嘘嘘主演 | 激情深爱五月开心婷婷综合 | 亚洲最大国产成 | 日韩精品中文字幕一区二区三区 | 国产黄大片在线观看画质 | 最近2025最新中文字幕免费看 | 国产精品 | 亚洲精品日韩在线观看高清不卡 | 欧美日韩精品一区二区三区视 | 自拍偷自拍亚洲精品播放 | 亚洲欧美偷拍另类a∨ | 欧美特黄一免在线观看 | 动漫h在线观看 | 亚洲制服丝袜自拍中文字幕 | 国产性猛交╳xxx乱大交 | 特级国产午夜理论不卡 | 亚洲开心婷婷中文字幕 | 亚洲国产婷婷综合在线精品五月 | 一区二区三区四区日韩 | 欧美综合自拍亚洲综合图 | 另类欧美变态 | 欧美专区亚洲专区 | 日干夜干 | 国产福利电影一区二区三区 | 欧美又大粗又爽又黄大片视 | 国产精品+免费 | 韩国高清乱理伦片中文字幕 | 亚洲国产欧美精品一区二区三区 | 热门电影电视剧短剧免费在线观看 | 人人干操 | 日本一夲道dvd在线 在线观看国产一线天木耳奈奈 | 不卡影视| 性夜黄a爽爽免费视频国产 亚洲日本一区二区一本一道 | 日韩午夜理论 | 国产日韩精品一区二区 | 日韩在线观看91精品免费 | 追心影视 | 国内20 | 国内国外精| 亚州精品永久观看视频 | 99国精品午夜 | 青青爽在线视频精品 | 精品国产伦一区二区三区在线 | 手机午夜福利1000视频 | 免费精品三级乱伦 | 亚洲国产精品尤物yw | 亚洲国产精品色一区二区 | 精品国产99国产精偷国产黄在线 | 欧美激情免费 | 色天使综合婷婷国产日韩v 国产精品ⅴa在线观看 | 国产亚洲一区二区手机在线观看 | 亚洲91国产精品 | 国产男女爽爽爽免费视频 | 国产人免费视频成69 | 国产精品视频丁香花综合 | 九九91精品国产 | 性感美女视频韩国 | 日韩伦理福利免费 | 91视频导航 | 精品国产免费一区二区三区四区 | 91最懂男人的午夜社区 | 永久www忘忧草 | 91视频完整版高清 | 亚洲色熟女图激情另类图区 | 国产欧美日韩资源在线观看 | 99这里都是精品 | 午夜国产免费 | 国产乱子夫妻xx黑人xyx真爽 | 99re国产精品视频首页 | 日韩中文字幕在线播放 | 国产美女爽到喷出水来视频 | 免费国产小视频在线观看 | 欧美日韩一区不卡 | 字幕无乱码 | 成视人a| 午夜在线视频91精品 | 亚洲欧美激情精品一 | 欧美精品视频在线观看 | 影视先锋资源免费在线观看 | 伊人激情一区二区三区 | 欧美在线精品视频二区 | 日本中文有 | 精品国产午夜福利不卡在 | 一女被多男玩喷潮视频免费看 | 99精品一区二区三区免费视频 | 日韩精品亚洲aⅴ在线影院 精品成人一区二区 | 中文字幕日韩一区二区三区不卡 | 日本视频网站在线w | 免费aⅴ大片在线观看 | 日本免费亚洲视频 | 日韩精品一区二区免费在线观看 | 亚洲精品老司机综合影院 | 国产精品va无 | 欧美特级理论片免费看 | 日韩一区二区免费看 | 中文字幕亚洲一区二区va在线 | 国产在线码 | 欧美专区亚洲专区 | 国产中文字幕在线免费观看 | 一区二三国产好的精华液 | 一区二区视频传媒有限公 | 国产日韩欧美911 | 亚洲日本va午夜在线影院 | 甜性涩爱 | 欧洲不卡二卡三卡四卡免费 | 日皮视频免费观看 | 正在播放国产一区 | 免费人成再在线观看视频 | 97碰成人国产免费公开视频 | 国产厨房一区二区三区 | 欧美日韩另类视频在线观看 | 超前点播最新电影电视剧 | 26uuu亚洲综 国产亚洲a | 天天天天香蕉线视频国产 | 男女爽爽午夜18 | 国产高清视频一区免费观看 | 野花免费观看日本一个电影 | 日本搞黄 | 又粗又大又硬又爽的免费视频 | 老司机永久免费视频网站 | 国产精品自在线拍国产手机版 | 91自产拍在线观看精品 | 伊人大相蕉在线看青青 | 精品国产sm捆绑最大网免费站 | 国产精品日韩在线观看一区二区 | 日韩欧美国产奇米影视在线观看 | 亚洲一区在线 | 亚洲国产一区二区试看 | 国产男女猛视频在线观看 | 亚洲综合视频在线观看 | 国产精品日韩精品在线 | 欧美性色黄大片www喷水 | 国产精品午夜看片 | 亚洲熟女乱综合一区二区 | 日韩综合精品一区二区 | 国产色产综合色产在线观看视频 | 九九九在线视频 | 国产免费网站看v片在线观看 | 野花香视频在线观看免费高清版 | 国产免费高清69式视频在线观看 | 亚洲一区二区三区在线观看网站 | 午夜性色一区二区三区不卡视频 | 亚洲欧洲另类春色校园小说 | 永久免费啪 | 欧美日韩亚洲国产综合 | 精品国产免费人成电影在线观 | 国产真实露脸乱子伦 | 亚洲卡一卡二 | 日韩视频网 | 精品h一区不卡免费视频国产 | 精品亚洲欧美v国产一区二区三区 | 国产suv精品一区二区6 | 福利在线观看 | 日本精品二三区视频在线观看 | 精品一区二区三区免费视频 | 国产又污又爽又黄又刺激网站 | 国产一区二区免费在线观看 | 国产精品极品美女自在线观看免费 | 色琪影院 | 欧美午夜在线 | 全黄裸片一29分钟免费真人版 | 午夜在线视频91精品 | 日本中文字幕二区三区 | 中文字幕不卡精 | 国产精品制服丝袜另类 | 欧美xxxx做| 精品91视频网站 | 日韩国产一区二区三区地区 | 成人免费在线视频观看 | 成年人在线免费观看视频 | 最近中文字幕免费高清mv视 | 国产特级婬片免费看 | 好看的电视剧全集免费在线观看 | 欧美精品亚洲精品日韩专 | 91精品国产亚洲爽啪在线观看 | 蜜桃色永久入口 | a级大胆欧美人体大胆666 | 亚洲v女人的天堂在线观看 五月婷婷中文字幕 | 亚洲欧美中文高清在线专区 | 国产久一视频在线观看app | 国产一区二区三区不卡在线 | 伊人色综| 日韩熟女高清精品专区 | 亚洲一区在线视频 | 一级风流片a级在线播放 | 99国产在线国语精品2025 | 1769国产精品视 | 国产精品九九视频 | 91tv最新永久在线地址 | 动漫美女无 | 国产精品福利尤物youwu | 免费在线宅男精品视频 | 国产成a人片在线观看视频下载 | 亚洲.欧美.中文 | 成a人片在线观看手机看 | 亚洲图片另类综合小说 | 国产日本欧美高清免费区 | 国产精品免费高清在线观看 | 亚洲愉拍自拍欧美精品 | 亚洲911国产精品 | 国产理论视频在线观看 | 加勒比色 | 最新亚洲一区二区在 | 欧美中文小说在线观看 | 国产精品1区2区 | 国产色系视频在线观看免费 | 五月丁香 | 欧美蜜桃臀在线观看一区 | 美女是黄的网址视频在线 | 人摸人摸在线视频 | a∨国产a∨ | 精品一区二区三区高清免费不 | 亚洲色国产观看在线另类 | 999zyz玖玖 | 国产网红主播自拍视频在线观看 | 国产精品视频视 | 欧美亚洲国产清纯综合图区 | 天堂mv在线mv免费mv香蕉 | 三区观看 | 91天仙tv国产福利精品 | 国产欧美一区二区樱花在线观看 | 夫妇交换 | 国产偷国产偷亚洲高清日 | 亚洲aⅴ男人的天堂在线观看 | 亚洲小说一 | 国产在线精品国自产拍影院 | 一起碰一起噜一起 | 99国产在线视频 | 亚洲精品欧美日韩一区二区 | 国产日韩精品一区二区三区在线观 | 字幕一区在线观看视频 | 亚洲911国产精品 | 国产免费大片 | 欧美三级极品视频在线观看 | 欧美精品国产日韩综合在线 | 国产亚洲精品a在线看 | 黄+片在线免费观看+精品+巨 | 精品www日韩熟女 | 日本高清视频在线观看不卡 | 中文在线资源天堂www | 精品人伦一区二区三区蜜 | 国产午夜福利院在 | 亚洲美女又黄又爽在线观看 | 一区二区三区免费在线观看 | 国产精品免费入口视频 | 99re9精品视 中文字幕+乱码+日韩 | 欧美人成网站观看www | 亚洲综合色区在线播放 | 亚洲欧美日韩国产另例 | 国产91精品在线观看导航 | 8x8×拨牐拨 国产suv精品一区二区6 | 国产自在自线精品午夜视频 | 国产高清在线精品一区小说 | 精品一区二区三区视频免 | 国产美女嘘嘘嘘嘘嘘 | 亚洲高清中文字幕一区二区三区 | 热门电视剧免费在线观看 | 亚洲精品日韩一区 | 中文字幕一区二区三区四区五区 | 在线a亚洲视频播放在线观看 | 国产熟女乱伦一区二区 | 国产日韩高清制服一区 | 无遮无挡三级动态图 | 一区二区三区免费播放 | 日韩国产经典欧美午夜福利 | 亚洲人午夜射精精品日 | 91短视频在线观看 | 国产一区二区在线播放女友 | 欧美性黑人极品hd另类 | 免费人成年激情视频在线观看 | 欧美人与牲禽ⅹxxx伦交 | aaa亚洲男人的天堂 日本搞黄 | 中文字幕99 | 午夜男女福利 | 国产在线观看精品一区二区三区 | 国产福利在线高清导航大全 | 国内日本精品视频在线观看 | 国产精品日本一区二区在线看 | 香港一区二区三区 | 国产极品视频 | 国产精品白丝a∨网站 | 高清免费国产传媒海量视频 | 日韩精品一区 | 国产在线观看色免費資訊 | 色哒哒影院 | 精品免费一区二区三区视频 | 免费a级| 美国十次啦超级大导航 | 免费国产h视频在 | 日本免费人成视频在线观看 | 产区和二线产区区别 | 欧美午夜一区二区三区 | 永久免费影院 | 亚洲高清中文字幕一区二区三区 | 一区二区三区四 | 泰国一级特黄在线观看大片 | 污污免费网站 | 窝窝午夜理论片影院 | 精品午夜免费高清视频 | 亚洲国产精品福利片在线观看 | 日韩精品一区二区三区免费在线 | 中文字幕永久在线日本高清dvd | 亚洲精品第一国产综合精品5 | 午夜福利体验免费体验区 | 国内精品人 | 探花网站 | 国产在线观 | 国产大片a免费在线手机观看 | 亚洲产国偷v | 日本中文字幕一区二区视频 | 中文字幕免费观看一区 | 96在线视频精品 | 91人成在线观看网站 | 国内精品视频一区二区三区 | 日本三级私人电影网 | 天堂mv亚洲mv在 | 九九热精品在 | 色国产综合免费视频在线播放 | 国产自偷自偷免费一区 | 免费高清欧美亚洲视频 | 中文字幕乱倫视频 | 亚洲综合色一区二区三区另类 | 男人日女人的逼视频 | 最近免费中文字幕大全 | 国产激情一区二区三区在线hd | 国产精品成人免费福利 | 亚洲人和日本人 | 婷婷亚洲综合一区二区 | 国产精品亚洲欧美高清 | 偷偷要色偷偷网站视频 | 日本丶国产 | 一区二区三区中文字幕 | 免费高清乱伦无 | 亚洲国产精品美女 | 日亚洲第 | 日韩精品免费一区二区三区高清 | 午夜福利电影在线 | 欧美亚洲日韩国产综合网 | 欧美三级欧美一级在线视频 | 一区二区三区国产精品午夜福利 | 中文字幕亚洲欧美在线不卡 | 97国语精品自产拍在线观看一 | 2025天堂视频精品 | 精品国产拍国产天天人 | 欧美日韩国产高清一区二区三区 | 尤物国产精品福利三区 | 2025亚洲日韩新视频 | 一区二区三区免费 | 国产精品综合色区在线 | 国产免费不卡一区在线视频 | 亚洲精品综合精品自拍 | 日本在线观看免费高清 | 极品美女在线观看国产一区 | 亚洲国产 | 黑人性较视频免费视频 | 了解最新日韩精品 | 亚洲精品在看在线 | 亚洲综合精品成人 | 99re6在线视频精品免费下载 | 国产欧美日本韩国另类 | 亚洲欧美中文一区二区三区 | 91香蕉成人免费网站 | 国产精品福利在线播放 | 免费va人成视频网站全 | 国产观看免费在线久 | 欧美色欧美亚洲高清在线视 | 国产亚洲一区二区手机在线观看 | 精品免费国产一区二区三区四区五 | 精品国产尤物 | 97在线视频观看在线观看视频 | 一区二区三区免费在线视频 | 另类专区亚洲 | 骚女影院 | 国产炮机主播在线观看 | 国产v在线在线观看视频免费 | 日本一级淫片a免费播放口 911精品中文在线播放永久 | 手机高清热播韩剧美剧电视剧 | 国产日产一区二 | 国产在线国偷精品产拍 | 亚洲丝袜一区二区 | 亚洲欧洲日韩国产aa色大片 | 国产精品天干天干综合网 | 国产精彩亚洲中文 | 国产高清不 | 午夜欧美在线 | 黑人巨大精品欧美一区二区一 | 日产精品一| 国产一区二 | 2025手机影院 | 精品国产中文 | 太粗太硬小寡妇受不了 | 最好看的中文字幕国语电影 | 在线日本妇人成熟免费 | 午夜探花 | 亚洲综合精品第一页 | 国产视频高清在线观看 | 99re热视频这里只有综合亚洲 | 51精品免费视频国 | 日本天堂天v在线播放 | 欧美a级片一区二区在线播放 | 成年人在线播放视频 | 国内精品自在自线视频在线观 | 亚洲性爱免费网址 | 免费高清国产 | 羞羞视频免费看网站 | 日韩专区在线 | 精品国产免费一区二区三区四区 | 日本国产在线精品专区 | 国产美女自卫慰视频福利 | а√天堂资源在线官网 | 国产a在亚洲线播放 | 99视频精品免费在线观看 | 亚洲精品国产自在在线观看 | 区二区视频在线观看 | 9i看片成人免费 | 免费人成网站在线免费观看 | 亚洲精品成人区在线观看 | 在线看国产精品 | 国语精品视频自产自拍 | 一级一片一a一片 | 中文字幕日韩一区二区不卡 | 欧美一区二区三区免费 | 欧美视频一区二区三区在线观看 | 亚洲精品在线观看视频 | 亚洲国产欧美一区二区三区 | 狠狠亚洲婷婷综合色香五月 | 亚洲一区二区三区不卡视频 | 国产精品对白交换绿帽视频 | 日本精品在线一区欧美 | 变态拳头交视频一区二区 | 亚洲国产中文字幕在线观看 | 国产精品一区二区亚瑟不卡 | 国产不卡免费视频 | 亚洲日韩高清在线亚洲专区 | 黄三级高清在线播放 | 国产一区二区亚洲一区二区 | 网站国产| 欧美性a视频 | 欧美国产日本高清不卡免费 | 亚洲成aⅴ人片久青草影院 国产91精品系列在线观看 | 男人日女人的逼视频 | 欧美午夜| 亚洲精品宾馆在线精品酒店 | 精品欧美日韩在线视频 | 国产高清精品自在线看 | 国产一区二区三区四区免费观看 | 好看的电视剧免费在线观看 | 国产精品综合影院在线观看 | 亚洲日韩制服中文字幕 | 亚洲中国中文字幕免费 | 韩国伦理电影在线观免费观看 | 99精品视频免费在线观看 | 成人3d精品动漫在线播放 | 精品日本一区 | 日国产一区三区三区在线观看 | 日本b站一卡二不卡三卡四卡 | 国产一区二区精品 | 欧美日韩在线精品一区二区 | 国产视频福利一区电影 | 性激片在线播放欧美 | 国产午夜高 | 午夜国产福利在线直播 | 中文字幕v | 国产精品国产精品国产专区不卡 | 国产一区二区视频在线播放 | 国产+日韩精品 | 国内精品在线观看看 | 999在线观看国产 | 日韩国产在线观看 | 欧洲中文日韩亚洲精品视频 | 亚洲宅男精品一区在线观看 | 国产高清片 | 中文字幕亚洲欧美日韩在线不卡 | 国产美女一级做视须爱 | 精品一区二 | 国产精品每日更新在线观看 | 精品国语任你躁 | 日韩一区二区在线观看 | 高清欧美性猛交xxxx黑人猛交 | 亚洲男人的天堂在线aⅴ视频 | 91精品福利在线观看播放 | 国产精品日韩精品在线播放 | 免费无毒片在线观看 | 产免费一区二区三区视频 | 欧美一级高清在线观看 | 天堂mv在线mv免费mv香蕉 | 国产二区三区 | 欧美日韩一道在线 | 国产精品丝袜高跟鞋 | 村长扶着小萍的腰猛的挺进 | 日本中文字幕在线 | 国产视频精| 视频免费看 | 日国产一区三区三区在线观看 | 韩国免费视频一区二区三区 | 精品国产午夜福利精品推荐 | 日本一区二区三区中文字幕 | 亚洲精品二区国产综合野狼 | 日本一二三区视频在线 | 色与欲影视天天看综合网 | 66lu国产在线观看 | 48国产吹潮在线观看 | 岳妇伦丰满69xx | 免费国产网站在线观看不卡 | 日韩国产在线观看 | 国产国产精品人在线视 | 黑人巨大精品欧美一区二区在线 | 一区二区三区四区在线观看视频 | 国产午夜福利在线 | 亚洲高清一区二区三区四区 | 免费现黄频在线观看国产 | 日本动漫精品一区二区三区 | 海角国精产品一区一区三区糖心 | 精品国产品香蕉在线观 | 国产一级淫片a免费播放口 海量热播电视剧手机电影在线观看 | 成人午夜视频在线视频 | 亚洲视频日 | 日本一区午夜艳熟免费 | 99精品一区二区三区免费视频 | 色爱综合网| 超薄丝袜足j | 日韩一区二区在线观看 | 亚洲人成亚洲人成在线观看 | 国产乱子伦精品免费视频 | 91九色国产在线 | 亚洲人成日韩中文字幕不卡 | 日本三级韩国三级香港三级a级 | 日韩男女性生活视频在线观看 | 国产精品99在线观看 | 99国产精品 | 欧美精品1区国新欲乱视频 国产一区二区精品免费播放 | 在线天堂8 | 中文字幕在线看日本大片 | 把伸进女人的www下载 | 国产亚洲精品mv第十页 | 国产在线一区二区三区在线 | 国产蜜片免费在线观看播放 | 国产日韩欧美在线 | 国产精品自产拍在线网站 | 国产欧美日韩一级 | 免费看美女部位隐私网站 | 亚洲视频网站在线观看 | 成人免费高清观看在线 | 国产羞羞视频在线观看 | 日本一本二本三区免费 | 国内自拍第一页 | 影视最全更新最快 | 国产精品偷窥熟女欧美激 | 最新好看的影视大全在线观看 | 很黄很色的免费视频在线观看 | 日本一区二区三区四区在线 | 国产国产裸模裸模私拍视频 | 亚洲欧美一区二区三区电影 | 中文日本免费高清 | 亚洲成v人片在线观看 | 污污视频软件下载 | 国产超污精| 国产精品99精品一区二区三区 | 忍不住的亲子中文字幕在线 | 国产欧美日韩一区 | 国产精品区二区三区日本 | 国产乱码精品一区二区三 | 国产丝袜在线精品丝袜不卡 | 在线看片免费人成视频手机观看 | 国产精品玩偶在线 | 美女国产在线观看免费观看 | 日韩免费在线观看性生活视频 | 每日更新国产精品视频 | 亚洲日韩电影网天堂影院 | 亚洲午夜免 | 日韩欧美视频一区二区 | 国产欧美日韩一区二区三区在线 | 亚洲日韩在线精品茄子在线 | 最新热门日韩电影 | 午夜激情视频三区在线 | 国语自产偷拍精 | 九九国产视频 | 国内免费久 | 国产日韩在线观看香蕉一区 | 国产欧美日韩精品综合在线 | 国产欧美国产精品第一区 | 99成人国产精品视频 | 色色福利 | 国产片免费 | ⅴ在线观看 | 欧美高清精品一区二区 | 樱桃视频香蕉 | a级国产乱理伦片在线播放 影视网址 | 成小说网站色在线 | 观看视频新选择 | 亚洲国产精品一区 | 亚洲国产精品免费在线观看 | 日韩高清va视频 | 韩国漂亮美女三级在线观看 | 97视频新免费 | 中文字幕亚洲无限码 | 91天仙tv国产福利精品 | 欧美一级高清视频在线播放 | 成人品观看免费 | 国产人妖专区视频在线一区 | 日本黄页网站免费大全 | 午夜福利影院 | 青青精品导航 | a级国产乱理片 | 色人阁第四色 | 99精品视频免费热播在线观看 | 污污污污污免费网站在线观看 | 欧美性夜影院亚洲 | 2025国产每日福利更新 | 国产精品国语对白露脸在线播 | 欧美一区二区三区日韩精品 | 亚洲精品自 | 欧美推油无尺码 | 日韩欧美激情刺激 | 日本免费一区视频 | 亚洲va韩国va欧美va | 太粗太硬小寡妇受不了 | 日韩中文字幕高清一区 | 国产亚洲欧美一区二区精 | 给我免费观看片在线观看中国 | 亚洲精品伦理一区二区三区青春 | 91精品国产综合久蜜臀 | 精品亚洲国产 | 国产亚洲高清不卡在线 | 欧美日韩国产在线播放 | 国产精品素人福利 | 精品国产福利在线观看91啪 | 欧美一区二区三区精品视频在线 | 国产亚洲欧美第一页在线观看 | 国产v视频在线亚洲视频 | 欧美日韩一区视频导航 | 五月天婷五月天 | 国产精品资源网站在线观看 | 91破解版在线 | 国产未成女一区二区 | 亚洲欧美精品suv | 亚洲国产精品综合一区在线 | 高清免费国产传媒海量视频 | 精品国产自1000在线现拍 | 私人情侣影院在线电影院 | 精品精品国产免费看不卡 | 国产精品一区二区 | 亚洲国产精品不卡高清在 | 国产刺激视频在线观看 | 欧美综合区自拍亚洲综合 | 极品魔鬼身 | 国产精品爽爽va在线观看 | 亚洲国产精品一在线 | 国产精品猎奇另类视频 | 中国老太婆bb | 国产精品不卡视频 | 亚洲综合在线成人一区 | 国产精品偷伦费观看 | 欧洲动漫精品专区一区二区三区 | 999国产| 免费国产高清视频 | 亚洲国产亚洲片在线观看播放 | 欧美激情 | 国产伦精品一一区二区三区高清版 | 在线视频一区二区男男 | 精品国产又大又长又爽 | 亚洲视频在线观看精品 | 国产在线观看精品 | 7799国产大片免费看 | 国产精品一级国产精品片 | 日本免费人成视频在线观看 | 美女视频性感网站 | 日本成人动漫私人影院 | 亚洲一区在线 | 国产又污又爽又黄又刺激网站 | 国产精品福利社 | 日产亚洲一区二区三区 | 日本精品国产一区二区在线 | 亚洲精品vs中文字幕白桨 | 最近中文字幕高清字幕在线视频 | 99视频热这里只有精品 | 中文字幕资源网在线观看免费 | 欧美、另类亚洲日本一区二 | 两性刺激生活片免费 | 真实国产乱子伦在线观看 | 337p日本人体 | 国产精品岛国 | 东方aⅴ免费观看 | 亚洲精品视频免费观看 | 国产色综合天天综合网 | 十大黄台禁用 | 视频软件短片 | 国产福利小电影视福利在线 | 日韩精品三级一区二区 | 人摸人摸在线视频 | 亚洲b站精品大片网站 | 国产精品亚洲欧美云霸高清 | 欧美激情一 | 桃色在线观看 | 第一福利精品500在线导航 | 精品国产日韩欧美一区二区 | 亚洲国产欧美精品一区二区三区 | 国产又大 | 91热成人精品国产免费 | 国产精品免费aⅴ片在线观看 | 在线观看一级亚洲欧美观看 | 欧美精品自拍一区 | 91精品国产免费青青碰 | 天美麻花星空免费观看乡村版 | 神马未来手机 | 亚洲欧洲日本精品永久在线观看 | 国产欧美日韩综合精品一区二区三 | 国产高清在线观看无删减 | 欧美日韩国产精品一区二区 | 国产91精品在线 |