//DragDropDecoratorのCanvas.Top,Canvas.Leftプロパティを更新 void inputModel_ManipulationUpdated(object sender, Microsoft.Kinect.Input.KinectManipulationUpdatedEventArgs e) { //DragDropDecoratorの親はCanvas Canvas canvas = dragDropDecorator.Parent as Canvas; if (canvas != null) { double y = Canvas.GetTop(dragDropDecorator); double x = Canvas.GetLeft(dragDropDecorator); if (double.IsNaN(x) || double.IsNaN(y)) { return; } PointF delta = e.Delta.Translation; //deltaは-1.0..1.0の相対値で表されているのでKinectRegionに合わせて拡大 var Dy = delta.Y * kinectRegion.ActualHeight; var Dx = delta.X * kinectRegion.ActualWidth; Canvas.SetTop(dragDropDecorator, y + Dy); Canvas.SetLeft(dragDropDecorator, x + Dx); } }
private void InputModel_ManipulationUpdated(object sender, Microsoft.Kinect.Input.KinectManipulationUpdatedEventArgs e) { //Console.Write("\nInputModel_ManipulationUpdated: " + myThumb.index); var parentCanvas = myThumb.Parent as Canvas; var delta = e.Delta.Translation; var yDelta = delta.Y * this.kinectRegion.ActualHeight; var xDelta = delta.X * this.kinectRegion.ActualWidth; int count = 0; // myThumb.getWindowRef().ActionText.Text = "Dragging " + myThumb.Name; if (myThumb.getWindowRef().wholeGroupSelected) { //Console.Write("\nLoop.............................................................................................."); foreach (MyThumb thumb in myThumb.getWindowRef().getGroupModeObject().currentSelectedGroup.getListOfThumbs()) { var y = Canvas.GetTop(thumb); var x = Canvas.GetLeft(thumb); if (double.IsNaN(y)) { y = 0; } if (double.IsNaN(x)) { x = 0; } //Console.Write("\nInputModel_ManipulationUpdated: " + (count++) + " => " + yDelta + " , " + xDelta + " , " + y + " , " + x); // delta values are 0.0 to 1.0, so we need to scale it to the number of pixels in the kinect region if (parentCanvas != null) { if (Canvas.GetLeft(thumb) > 0) { Canvas.SetTop(thumb, y + yDelta); Canvas.SetLeft(thumb, x + xDelta); } else { Canvas.SetTop(thumb, y + yDelta); Canvas.SetLeft(thumb, 1); } myThumb.getWindowRef().dragWholeGroupUpdate(thumb); } } } else { var y = Canvas.GetTop(myThumb); var x = Canvas.GetLeft(myThumb); if (double.IsNaN(y)) { y = 0; } if (double.IsNaN(x)) { x = 0; } // delta values are 0.0 to 1.0, so we need to scale it to the number of pixels in the kinect region //var yDelta = delta.Y * this.kinectRegion.ActualHeight; //var xDelta = delta.X * this.kinectRegion.ActualWidth; if (parentCanvas != null) { if (Canvas.GetLeft(myThumb) > 0) { Canvas.SetTop(myThumb, y + yDelta); Canvas.SetLeft(myThumb, x + xDelta); } else { Canvas.SetTop(myThumb, y + yDelta); Canvas.SetLeft(myThumb, 1); } } myThumb.getWindowRef().UpdateAllForAThumb(myThumb); } }