HelixView3D cannot catch MouseWheel event

Jun 17, 2011 at 4:14 PM
Edited Jun 17, 2011 at 4:14 PM

Hi,

I'm doing a project where I have to do a panorama application and I'm using the great sample that you provided. However, I need to handle mouse event and I've issue with the MouseWheel event which is never fired. I tried it in my code and in your sample as follow:

 

<ht:HelixView3D x:Name="view1" ShowViewCube="False" ShowCameraTarget="False" CameraMode="FixedPosition" RotationSensitivity="0.1" 
ShowCoordinateSystem="True" ShowFieldOfView="True" ShowFrameRate="True" MouseWheel="view1_MouseWheel">

 

The code behind is:

 

private void view1_MouseWheel(object sender, MouseWheelEventArgs e) 
{

	int i = 0;
}

 

If I put a break point on the line int i = 0, nothing hapen when I scroll. I've tried another mouse event: MouseMove and it is working fin. MouseWheel is also working fine with other components. I'm guessing that you are handling the MouseEvent (or else it would not be possible to zoom) but I cannot find where. I would like to overload it to continue to use your functionalities and to add mine on it.

Do you have any idea of where I should look at?

Thanks!

Coordinator
Jun 19, 2011 at 11:31 AM

hi Flanfl, you find the mouse wheel handling in the CameraController code. It is setting Handled to true as you noticed.

Do you want to disable mouse wheel zooming? That could be a feature to add!

I suggest adding a MouseWheelAction { None, Zoom } or a EnableMouseWheelZooming property.

Will this work for you?

Jun 21, 2011 at 11:38 AM

Hi, 

Thanks for the answer, I saw the CameraController class but when I created a HelixView3D object, the property CameraController is always null (I tried in the panorama test sample as well) and it is a read only property. 

I think I do not understand something but I don't know what. 

I do not want to disable the zooming function I just want to know how much a user zoom in/out so I can know how "close" he is from the picture, they might be already a property that can tell me that but I didn't find it ^^

So what I'am doing wrong?

Thanks! 

Coordinator
Jun 22, 2011 at 9:28 AM

The CameraController of the HelixView3D is set when the template is applied. HelixView3D is not supporting custom camera controllers (I try to keep it simple), so you are right - it is only gettable.

Did you try calculating the distance from the Camera.LookDirection.Length or Camera.FieldOfView (for 'FixedPosition' camera controller)?

Jun 22, 2011 at 3:02 PM

Hi Objo,

I already tried LookDirection.Length but it was not really useful, but I didn't thought about FieldOfView! That's what I needed :) 

Thanks a lot!