Silverlight: центрирование после масштабирования - PullRequest
2 голосов
/ 23 февраля 2010

Я узнал, как получить полосы прокрутки ScrollViewer для отображения после масштабирования элемента в ScrollViewer из этого поста: http://www.eightyeightpercentnerd.dreamhosters.com/?p=92

Теперь я пытаюсь заставить масштабированный объект (в данном случае холст) правильно центрироваться в 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%: alt text

После уменьшения на 50% синий холст по-прежнему центрируется: alt text

После увеличения на 400% и прокрутки, чтобы отобразить верхний левый угол синего холста: alt text

После увеличения на 400% и прокрутки, чтобы отобразить нижний правый угол синего холста: alt text

Итак, мой вопрос заключается в том, как правильно расположить синий холст по центру ScrollViewer или красный холст или что-то еще?

1 Ответ

5 голосов
/ 24 февраля 2010

Может быть, я ошибся, но вы пытались установить RenderTransformOrigin для Canvas? E.g.:

    <Canvas x:Name="Surface" Background="Blue" Height="100" Width="100" 
            RenderTransformOrigin="0.5, 0.5">
        <Canvas.RenderTransform>
            <TransformGroup>
                <ScaleTransform x:Name="SurfaceScaleTransform" />
            </TransformGroup>
        </Canvas.RenderTransform>
        <!-- ... -->
    </Canvas>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...