2012-05-01 2 views
2

내 앱에서 어떤 것을 구현하려고하는데 이미지를 표시하고 사용자가 이미지를 들락날락하게해야합니다.WinRT (Metro 스타일 앱)의 이미지 확대/축소

나는 ScrollViewer를 사용하여 가능하다고 생각하지만 작동하지 못했습니다.

+0

당신이 "시맨틱 줌"이라고 부르는 것이 무엇인지 설명하는 것이 좋을 것 같습니다. –

+0

@LarryOsterman No. 시맨틱 줌은 그래픽으로 축소하는 대신 두 개 이상의 세부 묘사를 사용하는 개념입니다. http://msdn.microsoft.com/en-us/library/windows/apps/hh465319.aspx –

답변

1

Building A Multi-Touch Photo Viewer Control에 관한 Morten Nielsen의 기사를 확인하십시오. Silverlight/Windows Phone 용이지만 Image에서 조작을 가능하게하고 조작 이벤트에서 몇 가지 유형을 변경하면 큰 효과가 있습니다.

간단한 해결책으로는 이미지를 ScrollViewer에 넣는 것입니다. 작동하는지 보려면 터치 스크린이 필요하거나 시뮬레이터에서 실행해야합니다 (핀치 도구를 사용하여 드래그 앤 스크롤하여 이미지를 확대/축소).

또한 코드로 확대 할 수 있습니다 :

<Grid 
    Background="{StaticResource ApplicationPageBackgroundBrush}"> 
    <ScrollViewer 
     x:Name="myScrollViewer"> 
     <Image 
      Source="/Assets/SplashScreen.png" /> 
    </ScrollViewer> 
</Grid> 

합니다.

public BlankPage() 
{ 
    this.InitializeComponent(); 
    myScrollViewer.ZoomMode = ZoomMode.Enabled; // default 
    Test(); 
} 

private async void Test() 
{ 
    while (true) 
    { 
     for (double x = 0; x < 2 * Math.PI; x += Math.PI/30) 
     { 
      await Task.Delay(1000/30); 
      float factor = (float)(1.0 + Math.Sin(x)/10); 
      myScrollViewer.ZoomToFactor(factor); 
     } 
    } 
} 
+0

나는 이것을 시험해 보았다. 그것은 나에게 잘 맞지 않았다. 나는 그것을 운반 할 수 없었다. 그리고 더 쉬운 방법이 있다고 생각합니다. 이전에 누군가가 그것을 봤다는 것을 알았지 만, 그것은 어떤 워크샵에 있었고, 나는 그 사람에게 연락 할 수 없습니다. – Ateik

3

나는이 문제를 지나치게 단순화하기 싫어하지만, WinRT XAML에서 ScrollViewer는 내장 제스처 조작이 있습니다.

당신은 내가 here을 의미하는 것을 볼 수 있습니다. 이것은 당신이 원하는 것이 아닐 수도 있습니다. 그러나 그것은 확실한 접근법이며 일정 비율의 시나리오에 맞을 수도 있습니다. 어쩌면 너일지도 몰라.

합성에 ScrollViewer를 통합하는 컨트롤은 종종 기본 템플릿에 ZoomMode 값을 설정하고 시각적 상태를 시작하며 일반적으로 시작하는 템플릿 화 된 값입니다. 일반적으로 컨트롤의 ScrollViewer 컨트롤은 템플릿 바인딩을 사용하여 컨트롤 수준에서 연결된 속성을 설정하면 컨트롤 내의 ScrollViewer 파트의 스크롤 동작이 변경됩니다. 그렇지 않으면 ScrollViewer 파트의 스크롤 비헤이비어를 변경하기 위해 템플리트를 교체해야 할 수도 있습니다.

+0

답변을 주셔서 감사합니다. 시도했지만 코드 뒤에서 한 지점을 확대 할 수 없습니다. 아이디어를 명확히하기 위해 실내지도를 만들고 일부 지역을 강조 표시하고 확대하고 싶습니다. – Ateik

관련 문제