私は二次画像(2000×2000)を持っています。私はそれらをフルスクリーンでページに表示して、「ピンチでズーム」することができます。従って、最初の画像は768×768のシースを有する。WP7二次画像をフルスクリーンで表示し、ズームしてピンチします
。すぐそこに何か欠けていると、左のように画像は、二次であることを、
private void OnPinchStarted(object sender, PinchStartedGestureEventArgs e)
{
var image = sender as Image;
if (image == null) return;
initialScale = transform.ScaleX;
Point firstTouch = e.GetPosition(image, 0);
Point secondTouch = e.GetPosition(image, 1);
center = new Point(firstTouch.X + (secondTouch.X - firstTouch.X)/2.0,
firstTouch.Y + (secondTouch.Y - firstTouch.Y)/2.0);
}
private void OnPinchDelta(object sender, PinchGestureEventArgs e)
{
var image = sender as Image;
if (image == null) return;
if (initialScale*e.DistanceRatio > 4 || (initialScale != 1 && e.DistanceRatio == 1) ||
initialScale*e.DistanceRatio < 1)
return;
if (e.DistanceRatio <= 1.08)
{
transform.CenterY = 0;
transform.CenterY = 0;
transform.TranslateX = 0;
transform.TranslateY = 0;
}
transform.CenterX = center.X;
transform.CenterY = center.Y;
transform.ScaleX = (Orientation == PageOrientation.Landscape)
? initialScale*(1 + (e.DistanceRatio - 1)*2)
: initialScale*e.DistanceRatio;
transform.ScaleY = transform.ScaleX;
}
private void OnDragDelta(object sender, DragDeltaGestureEventArgs e)
{
var image = sender as Image;
if (image == null || transform.ScaleX <= 1.1) return;
double centerX = transform.CenterX;
double centerY = transform.CenterY;
double translateX = transform.TranslateX;
double translateY = transform.TranslateY;
double scale = transform.ScaleX;
double width = image.ActualWidth;
double height = image.ActualHeight;
if (centerX - scale*centerX + translateX + e.HorizontalChange < 0 &&
centerX + scale*(width - centerX) + translateX + e.HorizontalChange > width)
{
transform.TranslateX += e.HorizontalChange;
}
if (centerY - scale*centerY + translateY + e.VerticalChange < 0 &&
centerY + scale*(height - centerY) + translateY + e.VerticalChange > height)
{
transform.TranslateY += e.VerticalChange;
}
return;
}
は基本的に私が今持っていることはありませんボーダー(フルスクリーン)で、絵であると私は、ズームインすることができます。しかし、問題はあります私は左または右に "スクロール"(または、より良い画像を移動することはできません)。画像のarroundを動かすのは、ズームインしたときだけですが、画像の欠けている部分は見えません。任意のアイデアをどのようにこれを解決するには?
私はコードを変更しました。最初にズームインすることなく、イメージを移動できます。しかし、画像は単に視覚的なスクリーンの外で作物されているだけです。画像コントロールのサイズを768 x 768に変更しても、表示幅(428)外のものはすべて白です。ストレッチプロパティを変更しても、この動作は変わりません。 –