센터링 한 후 내가이 글에서의 ScrollViewer에 내 요소를 확장 한 후 표시 할 수있는 ScrollViewer의 스크롤 막대를 얻을하는 방법을 배웠습니다 : 지금 http://www.eightyeightpercentnerd.dreamhosters.com/?p=92실버 라이트 : ScaleTransform
을, 나는 스케일링 객체 (캔버스를 얻으려고 이 경우)가 ScrollViewer 내에서 올바르게 센터링됩니다. 나는 이미지가 내 이야기를 여기에 알려주도록 할 것이다. (Screencast.com이 내 파일을 제거하기 전에 도와 줘.) ;
내 XAML : 초기로드에
<ScrollViewer x:Name="ScrollViewer" VerticalAlignment="Top"
VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
Width="300" Height="300" Margin="0" Padding="0" Background="White">
<Canvas x:Name="DesignSurface" Background="Red">
<Canvas x:Name="Surface" Background="Blue" Height="100" Width="100">
<Canvas.RenderTransform>
<TransformGroup>
<ScaleTransform x:Name="SurfaceScaleTransform" />
</TransformGroup>
</Canvas.RenderTransform>
<!-- ... -->
</Canvas>
</Canvas>
</ScrollViewer>
, 내 푸른 캔버스 중심으로 100 %에서 50 %로 감소 후
, 파란색 캔버스는 여전히 중심 :
파란색 캔버스의 왼쪽 상단을 표시하도록 400 % 증가하고 스크롤 한 후
400 % 증가하고 파란색 캔버스의 오른쪽 하단 모서리를 표시하는 스크롤 후 :
그래서 내 질문에 내가에서 ScrollViewer 또는 빨간색 캔버스이든 제대로 중심으로 파란색 캔버스를 얻는 방법 간단?
그건 내가 제안하려고했던 것입니다. – ChrisF
RenderTransformOrigin을 사용하고 ScaleTransform에 대한 CenterX 및 CenterY 값을 설정해 보았습니다. 그리고 스케일 업이 제대로 작동했지만 작동하지는 않았습니다. 난 그냥 문제가 해결되었습니다 "푸른"캔버스의 상단 및 왼쪽 값을 일부 로직을 기반으로 스케일링 된 "파란색"캔버스가 ScrollViewer보다 작거나 큰 경우에 따라. 그것은 지금 잘 작동합니다. 도움. – beaudetious