h5 服装网站模板,windows优化大师有用吗,网站设计的宽度,学做糕点的网站1、前言 主要是针对前面有过实现不了交互的情况进行说明#xff0c;经过一些尝试和分析调用API#xff0c;总算实现RenderWindowControl函数回调正常串接#xff0c;当然这个移动处理事件的效果目前也没有确认。
2、使用 vtkImageReslice reslice vtkImageReslice.New();p…1、前言 主要是针对前面有过实现不了交互的情况进行说明经过一些尝试和分析调用API总算实现RenderWindowControl函数回调正常串接当然这个移动处理事件的效果目前也没有确认。
2、使用 vtkImageReslice reslice vtkImageReslice.New();private void TestInteractorStyle(){vtkMetaImageReader reader vtkMetaImageReader.New();reader.SetFileName(F:\\code\\VTK\\TestActiViz\\bin\\Debug\\data\\brain.mhd);reader.Update();int[] extent reader.GetOutput().GetExtent();double[] spacing reader.GetOutput().GetSpacing();double[] origin reader.GetOutput().GetOrigin();double[] center new double[3];center[0] origin[0] spacing[0] * 0.5 * (extent[0] extent[1]);center[1] origin[1] spacing[1] * 0.5 * (extent[2] extent[3]);center[2] origin[2] spacing[2] * 0.5 * (extent[4] extent[5]);double[] axialElements {1, 0, 0, 0,0, 1, 0, 0,0, 0, 1, 0,0, 0, 0, 1};//提取平行于YZ平面的切片IntPtr ptrData Marshal.AllocHGlobal(sizeof(double) * axialElements.Length);Marshal.Copy(axialElements, 0, ptrData, axialElements.Length);vtkMatrix4x4 resliceAxes vtkMatrix4x4.New();resliceAxes.DeepCopy(ptrData);resliceAxes.SetElement(0, 3, center[0]);resliceAxes.SetElement(1, 3, center[1]);resliceAxes.SetElement(2, 3, center[2]);reslice.SetInputData(reader.GetOutput());reslice.SetOutputDimensionality(2);reslice.SetResliceAxes(resliceAxes);reslice.SetInterpolationModeToLinear(); //指定切面提取中的插值方式为线性插值reslice.Update();vtkLookupTable colorTable vtkLookupTable.New();colorTable.SetRange(0, 1000);colorTable.SetValueRange(0, 1);colorTable.SetSaturationRange(0, 0);colorTable.SetRampToLinear();colorTable.Build();vtkImageMapToColors colorMap vtkImageMapToColors.New();colorMap.SetLookupTable(colorTable);colorMap.SetInputConnection(reslice.GetOutputPort());colorMap.Update();vtkImageActor orgActor vtkImageActor.New();orgActor.SetInputData(colorMap.GetOutput());vtkRenderer renderer3 vtkRenderer.New();renderer3.AddActor(orgActor);renderer3.ResetCamera();renderer3.SetBackground(0.4, 0.5, 0.6);vtkRenderWindow renderWindow renderWindowControl.RenderWindow;//vtkImageViewer2 imageViewer vtkImageViewer2.New();//imageViewer.SetSize(500, 500);//vtkRenderWindow renderWindow imageViewer.GetRenderWindow();renderWindow.AddRenderer(renderer3);vtkRenderWindowInteractor windowInteractor renderWindow.GetInteractor();windowInteractor.MouseMoveEvt ImageStyle_MouseMoveEvt;windowInteractor.LeftButtonPressEvt ImageStyle_LeftButtonPressEvt;windowInteractor.LeftButtonReleaseEvt ImageStyle_LeftButtonReleaseEvt;renderWindow.Render();} 实现事件回调的对象是通过控件对象获取 这个事件回调处理逻辑就不在复核。你可以自由发挥。 在事件回调的sender是vtkRenderWindowInteractor你可以按你的设计去获取或设置一些参数来实现你的想法了。
3、总结 我尝试过重写这个鼠标事件可是一个也不触发 想了想还是内部没有下发的问题。 再看这个vteRenderWindow可以获取到交互对象就把这个交互对象拿出来进行注册事件就可以了。 猜想可能是这个事件传递到他这里就不下发了当然啊也可能是一些设置没有开启。毕竟他这个上面有这么些方法不过后面还有机会打交道的。 类注释 platform-independent render window interaction including picking and frame rate control. vtkRenderWindowInteractor provides a platform-independent interaction mechanism for mouse/key/time events. It serves as a base class for platform-dependent implementations that handle routing of mouse/key/timer messages to vtkInteractorObserver and its subclasses. vtkRenderWindowInteractor also provides controls for picking, rendering frame rate, and headlights. vtkRenderWindowInteractor has changed from previous implementations and now serves only as a shell to hold user preferences and route messages to vtkInteractorStyle. Callbacks are available for many events. Platform specific subclasses should provide methods for manipulating timers, TerminateApp, and an event loop if required via Initialize/Start/Enable/Disable. 独立于平台的渲染窗互包括拾取和帧速率控制。 vtkRenderWindowInteractor 为鼠标/键/时间事件提供了一种独立于平台的交互机制。它用作平台相关实现的基类这些实现处理将鼠标/键/计时器消息路由到 vtkInteractorObserver 及其子类。 vtkRenderWindowInteractor 还提供了用于拾取、渲染帧速率和前照灯的控件。 vtkRenderWindowInteractor 与以前的实现不同现在仅用作 shell用于保存用户首选项并将消息路由到 vtkInteractorStyle。回调可用于许多事件。 特定于平台的子类应提供用于操作计时器、TerminateApp 和事件循环的方法如果需要通过 Initialize/Start/Enable/Disable。