2010-01-07 4 views
1

실버 라이트 전문가가 있으므로 도움이 필요합니다. Deep Zoom Composer를 사용하여 클라이언트의 대형지도 이미지 (20MB 이상) 용 Silverlight 응용 프로그램을 생성했습니다. 그러나 클라이언트는 사람들이 MultiScaleImage의 이미지 범위를 벗어난 검은 영역으로 이동하기를 원하지 않습니다. 어떻게 할 수 있습니까? 감사합니다.Silverlight MultiScaleImage의 가시 영역에만 패닝 제한 MultiScaleImage

답변

0

나는 이것을 위해 조금 더러운 문제를 발견했다. ViewPortChanged 이벤트가 발생하면 MultiScaleImage의 새로 변경된 ViewportOrigin을 아래 메서드로 전달합니다. 문제는 뷰 포트가 비동기 적으로 변경되고 사용자가 실제로 이미지를 경계로 다시 이동하는 것을 볼 수 있다는 것입니다.

public void SetViewportOrigin(Point point) 
    { 
     Point bottomRight = ZoomImage.ElementToLogicalPoint(new Point(ZoomImage.ActualWidth/ZoomImage.ViewportWidth - ZoomImage.ActualWidth, ZoomImage.ActualWidth/(ZoomImage.ViewportWidth * 1.33184438 /*ZoomImage.AspectRatio*/) - ZoomImage.ActualHeight)); 
     bottomRight.X -= ZoomImage.ViewportOrigin.X; 
     bottomRight.Y -= ZoomImage.ViewportOrigin.Y; 

     if (point.X < 0) 
     { //left edge 
      point.X = 0; 
      Debug.WriteLine("left edge"); 
     } 
     else if (point.X > bottomRight.X) 
     {//right edge 
      point.X = bottomRight.X; 
      Debug.WriteLine("right edge"); 
     } 

     if (point.Y > 1.0) 
     {//bottom edge 

      point.Y = 1.0; 
      Debug.WriteLine("bottom edge1"); 
     } 

     if (point.Y < 0) 
     {//top edge 
      point.Y = 0; 
      Debug.WriteLine("top edge"); 
     } 
     else if (point.Y > bottomRight.Y) //bottom edge 
     { 
      point.Y = bottomRight.Y; 
     } 

     ZoomImage.ViewportOrigin = point; 
    } 
관련 문제