<div>Hi, VTK guys,<br><br>I use Activiz 5.8 Open Source edition to display Axial, Sagittal and Coronal view for DICOM series in WPF application. In the XAML, I add a button and a vtkRenderWindowControl component. And a method ShowImagePlaneWidget() is defined. I just want to click the button then ShowImagePlaneWidget() is called, the DICOM series is loaded and displayed. But it does not work and the application crashes at vtkRenderWindowInteractor.start(). <br><br>However, the DICOM can be displayed if ShowImagePlaneWidget() is called in the Window_Load event handler. <br><br>What happens? How to fix it? I am working this issue for some time.<br><br>Below is my code:<br><br>private void Window_Loaded(object sender, RoutedEventArgs e)<br>        {<br>           ShowImagePlaneWidget();<br>        }<br><br>        private void btnLoad_Click(object sender, RoutedEventArgs e)<br>        {<br>           ShowImagePlaneWidget();<br>        }<br>        private void ShowImagePlaneWidget()<br>        {<br>            vtkImagePlaneWidget m_imagePlaneWidgetX = vtkImagePlaneWidget.New();<br>            vtkImagePlaneWidget m_imagePlaneWidgetY = vtkImagePlaneWidget.New();<br>            vtkImagePlaneWidget m_imagePlaneWidgetZ = vtkImagePlaneWidget.New();<br>            vtkRenderWindowInteractor m_interactor = vtkRenderWindowInteractor.New();<br><br>            vtkRenderWindow aRenderWindow = renderctrl.RenderWindow;<br><br>            vtkDICOMImageReader reader = vtkDICOMImageReader.New();<br>            reader.SetDirectoryName(@"C:\Personal\code\ReadDICOMSeries\build\Debug\IMG\Dental_Lossy_Compressed");<br>            reader.Update();<br><br>            int[] dims = new int[3];<br>            dims = reader.GetOutput().GetDimensions();<br><br>            vtkImageCast readerImageCast = vtkImageCast.New();<br>            readerImageCast.SetInput((vtkDataObject)reader.GetOutput());<br>            //readerImageCast.SetOutputScalarTypeToUnsignedChar();<br>            readerImageCast.ClampOverflowOn();<br>            readerImageCast.Update();<br><br>            m_interactor.SetRenderWindow(aRenderWindow);<br>            vtkRenderer renderer = aRenderWindow.GetRenderers().GetFirstRenderer();<br><br>            vtkCellPicker picker = vtkCellPicker.New();<br>            picker.SetTolerance(0.005);<br>            //m_imagePlaneWidgetX.DebugOn();<br>            m_imagePlaneWidgetX.SetDefaultRenderer(renderer);<br>            PrepareImagePlaneWidget(m_imagePlaneWidgetX, readerImageCast.GetOutput(), m_interactor, picker, dims, Direction.CORONAL);<br>            vtkRenderWindowInteractor tmpint = m_imagePlaneWidgetX.GetInteractor();<br>            PrepareImagePlaneWidget(m_imagePlaneWidgetY, readerImageCast.GetOutput(), m_interactor, picker, dims, Direction.SAGITTAL);<br>            PrepareImagePlaneWidget(m_imagePlaneWidgetZ, readerImageCast.GetOutput(), m_interactor, picker, dims, Direction.AXIAL);<br><br>            m_interactor.Initialize();<br>            m_interactor.Start();<br>            aRenderWindow.Render();<br>            return;<br>        }<br><br>        private void PrepareImagePlaneWidget(vtkImagePlaneWidget planeWidget, vtkImageData data, vtkRenderWindowInteractor interactor, vtkCellPicker picker, int[] dimensions, Direction direction)<br>        {<br>            planeWidget.SetInteractor(interactor);<br><br>            planeWidget.SetPicker(picker);<br>            planeWidget.RestrictPlaneToVolumeOn();<br><br>            planeWidget.DisplayTextOn();<br>            planeWidget.TextureInterpolateOff();<br>            planeWidget.SetResliceInterpolateToLinear();<br><br>            planeWidget.SetInput(data);<br><br>            switch (direction)<br>            {<br>                case Direction.AXIAL:<br>                    planeWidget.SetKeyPressActivationValue((sbyte)'z');<br>                    planeWidget.SetPlaneOrientationToZAxes();<br>                    planeWidget.GetPlaneProperty().SetColor(0.0, 0.0, 1.0);<br>                    break;<br>                case Direction.CORONAL:<br>                    planeWidget.SetKeyPressActivationValue((sbyte)'x');<br>                    planeWidget.SetPlaneOrientationToXAxes();<br>                    planeWidget.GetPlaneProperty().SetColor(1.0, 0.0, 0.0);<br>                    break;<br>                case Direction.SAGITTAL:<br>                    planeWidget.SetKeyPressActivationValue((sbyte)'y');<br>                    planeWidget.SetPlaneOrientationToYAxes();<br>                    planeWidget.GetPlaneProperty().SetColor(0.0, 1.0, 0.0);<br>                    break;<br>            }<br>            planeWidget.SetSliceIndex(dimensions[(int)direction] / 2);<br>            planeWidget.GetTexturePlaneProperty().SetOpacity(1);<br><br><br>            planeWidget.On();<br>            planeWidget.InteractionOn();<br>        }<br><br>Thanks<br>Liu Peng<br></div><br><br><span title="neteasefooter"><p> </p></span>