我找不到屬性或我需要的對象。如何不將圖像拖出框架?
我已經實現了一個可拖動和可縮放的圖像,但是我可以將它拖出屏幕,因此我失去了圖像。
我應該把我的圖像放在一個盒子裏面(可能還有很好的彈跳效果)?
編輯:
Pratically我的形象一直停留在StackPanel中,只有放大的可能性。 (最大縮小爲第一個渲染)。
的代碼位:
private void OnPinchStarted(object sender, PinchStartedGestureEventArgs e)
{
initialAngle = compositeTransform.Rotation;
initialScale = compositeTransform.ScaleX;
}
private void OnPinchDelta(object sender, PinchGestureEventArgs e)
{
compositeTransform.ScaleX = initialScale * e.DistanceRatio;
compositeTransform.ScaleY = initialScale * e.DistanceRatio;
}
private void OnDragDelta(object sender, DragDeltaGestureEventArgs e)
{
compositeTransform.TranslateX += e.HorizontalChange;
compositeTransform.TranslateY += e.VerticalChange;
}
<StackPanel x:Name="container">
<Image x:Name="image_chart">
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform x:Name="scale" />
<TranslateTransform x:Name="transform" />
<CompositeTransform x:Name="compositeTransform"/>
</TransformGroup>
</Image.RenderTransform>
<toolkit:GestureService.GestureListener>
<toolkit:GestureListener PinchStarted="OnPinchStarted" PinchDelta="OnPinchDelta"
DragDelta="OnDragDelta"/>
</toolkit:GestureService.GestureListener>
</Image>
</StackPanel>
EDIT 2 - 半回答
我終於找出如何停止縮小爲原來的大小!
private void OnPinchDelta(object sender, PinchGestureEventArgs e)
{
if (1.0 <= (initialScale * e.DistanceRatio))
{
compositeTransform.ScaleX = initialScale * e.DistanceRatio;
compositeTransform.ScaleY = initialScale * e.DistanceRatio;
}
}
If條件表示:如果我放大 - >沒有問題,因爲e.DistanceRatio> 1。如果我縮小,我會停止,直到initialScale將是相同的!
現在我仍然需要幫助如何避免在外面拖動。
你目前如何實現的呢? – Pol
我已經添加了一些代碼。 – Enrichman