private void RotateImage(RotationOperation operation) { vtkImageReslice reslice = vtkImageReslice.New(); vtkTransform transform = vtkTransform.New(); transform.PostMultiply(); double[] center = { 75, 100, 0 }; transform.Translate(-center[0], -center[1], -center[2]); if (operation == RotationOperation.Forward) { transform.RotateZ(90); } else if (operation == RotationOperation.Back) { transform.RotateZ(-90); } transform.Translate(+center[0], +center[1], +center[2]); transform.Update(); reslice.SetInput(_viewer.GetInput()); reslice.SetResliceTransform(transform); reslice.Update(); _viewer.SetInput(reslice.GetOutput()); UpdateViewer(); }
/// <summary> /// Update the 2D visualization when the plane moved. /// </summary> /// <param name="plane">PlaneWidget which changed the coordinates.</param> public void PlaneMoved(vtkImagePlaneWidget plane) { vtkImageReslice reslice = vtkImageReslice.New(); vtkTransform transform = vtkTransform.New(); transform.PostMultiply(); //TODO wyznaczenie centrum okna double[] center = { 75, 100, 0 }; transform.Translate(-center[0], -center[1], -center[2]); transform.RotateZ(_orientation); transform.Translate(+center[0], +center[1], +center[2]); transform.Update(); reslice.SetInput(plane.GetResliceOutput()); reslice.SetResliceTransform(transform); reslice.Update(); // vtkImageData viewerInputData; viewerInputData = reslice.GetOutput(); _lastData = viewerInputData; _viewer.SetInput(viewerInputData); // //_viewer.SetInput(reslice.GetOutput()); UpdateViewer(); }
//TODO public void DrawingModeRepaint() { if (_lastData == null) { return; } vtkImageReslice reslice = vtkImageReslice.New(); vtkTransform transform = vtkTransform.New(); transform.PostMultiply(); //TODO wyznaczenie centrum okna double[] center = { 75, 100, 0 }; transform.Translate(-center[0], -center[1], -center[2]); transform.RotateZ(_orientation); transform.Translate(+center[0], +center[1], +center[2]); transform.Update(); reslice.SetInput(_lastData); reslice.SetResliceTransform(transform); reslice.Update(); vtkImageData viewerInputData; if (!DrawingEnabled) { viewerInputData = reslice.GetOutput(); } else { var resliceOutput = reslice.GetOutput(); var sizeArray = resliceOutput.GetDimensions(); vtkImageCanvasSource2D imageCanvas = vtkImageCanvasSource2D.New(); imageCanvas.SetScalarTypeToUnsignedChar(); imageCanvas.SetExtent(0, sizeArray[0], 0, sizeArray[1], 0, 0); imageCanvas.DrawImage(0, 0, resliceOutput); DrawingUtils.Draw(imageCanvas, DrawingInfo); imageCanvas.Update(); viewerInputData = imageCanvas.GetOutput(); } _viewer.SetInput(viewerInputData); UpdateViewer(); }