Dear sir/madam<br><br>Hi,<br><br>I am a new user of VTK ActiViz.Net. I got a serious problem. I have successfully build an examples (ReadDICOMSeries) by using the Activiz.net in c# with visual studio and also build the cxx source. But when I run the program they don't work in the same way. In the cxx program, the slicer looks working nice, while on the other hand, the c# program seems broken. When I slice the images in the c# program, it seems being zoomed while I scroll the mouse wheel. But it is not happened when I use the keyboard keyUp and keyDown to change the slice.<br>
<br><br><br><br><br>Here's my c# source code :<br><br>===============================================<br><br>using System;<br>using System.Collections.Generic;<br>using System.ComponentModel;<br>using System.Data;<br>
using System.Drawing;<br>using System.Linq;<br>using System.Text;<br>using System.Windows.Forms;<br>using Kitware.VTK;<br>using Kitware.mummy;<br><br>using System.Diagnostics;<br>using System.IO;<br><br>namespace Pyramid<br>
{<br> public partial class Form1 : Form<br> {<br> vtkImageViewer2 _ImageViewer;<br><br> int _Slice;<br> int _MinSlice;<br> int _MaxSlice;<br><br> public Form1()<br> {<br><br>
InitializeComponent();<br> }<br> private void ReadDICOMSeries() {<br> vtkDICOMImageReader reader = vtkDICOMImageReader.New();<br> reader.SetDirectoryName("DICOM");<br> reader.Update();<br>
<br><br> vtkImageShiftScale shift = vtkImageShiftScale.New();<br> shift.SetInputConnection( reader.GetOutputPort() );<br> shift.SetShift( 1024);<br><br><br> _ImageViewer = vtkImageViewer2.New();<br>
_ImageViewer.SetInputConnection(reader.GetOutputPort());<br> _ImageViewer.GetSliceRange(ref _MinSlice, ref _MaxSlice);<br> Debug.WriteLine("slices range from : " + _MinSlice.ToString() + " to " + _MaxSlice.ToString());<br>
<br> vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow;<br><br><br> vtkRenderWindowInteractor iren = vtkRenderWindowInteractor.New();<br> <br> vtkInteractorStyleImage interactorStyle = vtkInteractorStyleImage.New();<br>
<br> <br> <br> iren.MouseWheelForwardEvt += new vtkObject.vtkObjectEventHandler(interactor_MouseWheelForwardEvt);<br> iren.MouseWheelBackwardEvt += new vtkObject.vtkObjectEventHandler(interactor_MouseWheelBackwardEvt);<br>
<br> iren.SetInteractorStyle(interactorStyle);<br><br> _ImageViewer.SetupInteractor(iren);<br> _ImageViewer.SetRenderWindow(renderWindow);<br> _ImageViewer.SetSlice(_MinSlice);<br> _ImageViewer.Render();<br>
}<br> <br> <br><br> private void MoveForwardSlice() {<br> Debug.WriteLine(_Slice.ToString());<br> if(_Slice < _MaxSlice) {<br> _Slice += 1;<br> _ImageViewer.SetSlice(_Slice);<br>
_ImageViewer.Render();<br> }<br> <br> }<br> <br><br> private void MoveBackwardSlice() {<br> Debug.WriteLine(_Slice.ToString());<br> if(_Slice > _MinSlice) {<br> _Slice -= 1;<br>
_ImageViewer.SetSlice(_Slice);<br> _ImageViewer.Render();<br> }<br> }<br> <br> <br><br> protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData) {<br>
<br> if(keyData == System.Windows.Forms.Keys.Up) {<br> MoveForwardSlice();<br> return true;<br> }<br> else if(keyData == System.Windows.Forms.Keys.Down) {<br> MoveBackwardSlice();<br>
return true;<br> }<br><br> else if(<br> keyData == System.Windows.Forms.Keys.F<br> || keyData == System.Windows.Forms.Keys.L<br> ) {<br> return true;<br>
}<br> return false;<br> }<br><br><br><br> void interactor_MouseWheelForwardEvt(vtkObject sender, vtkObjectEventArgs e) {<br> MoveForwardSlice();<br> }<br> <br> void interactor_MouseWheelBackwardEvt(vtkObject sender, vtkObjectEventArgs e) {<br>
if (_Slice > _MinSlice)<br> {<br> MoveBackwardSlice();<br> }<br> }<br><br> private void Form1_Load(object sender, EventArgs e)<br> {<br><br> }<br><br><br>
private void renderWindowControl1_Load_1(object sender, EventArgs e)<br> {<br> try<br> {<br> ReadDICOMSeries();<br> }<br> catch (Exception ex)<br> {<br>
MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK);<br> }<br> }<br> }<br>}<br><br><br>===========================================<br><br>I've tried to resolve it in many ways like changing the interactor or override the interactor. But it's not working. Any suggestion to resolve this problem please. I hope someone can help me to resolve this problem, please help me. Thank you very much<br>
<br><br><br>Regards,<br>-- <br>Yakub Aqib Bayhaqi<br><br><br>