[英]implementing zoom on an image wp7
我正在嘗試使用wp7或其他應用程序功能(例如,地圖)來點按wp7應用程序中的圖像以啟用縮放功能。 我見過的與此相關的大多數帖子都已經過時了,我想知道是否有一種更新的方法可以實現這一目標?
不知道是否有更好的東西,但是這是我在做什么:
<Image Name="displayImage" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Source="{Binding photo_link}" RenderTransformOrigin="0.5, 0.5" CacheMode="BitmapCache">
<Image.RenderTransform>
<CompositeTransform x:Name="transform" />
</Image.RenderTransform>
<toolkit:GestureService.GestureListener>
<toolkit:GestureListener PinchDelta="OnPinchDelta" PinchStarted="OnPinchStarted" />
</toolkit:GestureService.GestureListener>
</Image>
private void OnPinchStarted(object sender, PinchStartedGestureEventArgs e)
{
var image = sender as System.Windows.Controls.Image;
if (image == null) return;
var transform = image.RenderTransform as CompositeTransform;
if (transform == null) return;
initialScale = transform.ScaleX;
}
private void OnPinchDelta(object sender, PinchGestureEventArgs e)
{
var image = sender as System.Windows.Controls.Image;
if (image == null) return;
var transform = image.RenderTransform as CompositeTransform;
if (transform == null) return;
transform.ScaleX = initialScale * e.DistanceRatio;
transform.ScaleY = initialScale * e.DistanceRatio;
}
如果您想快速雙擊或重置大小,也可以跟蹤原始比例。
您需要使用比例變換。.如果您有興趣,我可以在以后做一個博客。對於捏縮放,拖動輕彈等,您需要使用工具包中的手勢服務
private void GestureListener_DragDelta(object sender, DragDeltaGestureEventArgs e)
{
scaleTrans.CenterX = (scaleTrans.CenterX - e.HorizontalChange);
scaleTrans.CenterY = (scaleTrans.CenterY - e.VerticalChange);
if (scaleTrans.CenterX < 0)
scaleTrans.CenterX = 0;
else if (scaleTrans.CenterX > (imgViewer.Height * scaleTrans.ScaleX))
scaleTrans.CenterX = imgViewer.Height * scaleTrans.ScaleX;
if(scaleTrans.CenterY < 0)
scaleTrans.CenterY = 0;
else if (scaleTrans.CenterY > (imgViewer.Height * scaleTrans.ScaleY))
scaleTrans.CenterY = imgViewer.Height * scaleTrans.ScaleY;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.