Масштабирование WPF с помощью ползунка Изменение размера ScrollViewer

В настоящее время у меня есть следующий код:

<ScrollViewer DockPanel.Dock="Top">
            <InkCanvas Name="InkCanvasOnImage" Height="203">
                <InkCanvas.LayoutTransform>
                    <ScaleTransform ScaleX="{Binding ElementName=ZoomSlider,Path=Value}" ScaleY="{Binding ElementName=ZoomSlider,Path=Value}"></ScaleTransform>
                </InkCanvas.LayoutTransform>
            </InkCanvas>
        </ScrollViewer>

        <Slider DockPanel.Dock="Top" Name="ZoomSlider" Value="1" Minimum="0.3" Maximum="3" Height="20" />

Когда я настраиваю ползунок, весь ScrollViewer меняет размеры и перемещает ползунок вверх и вниз в приложении. То, что я намеревался, было только изображение, которое находится внутри InkCanvas для увеличения и уменьшения. Использую ли я для этого правильный элемент управления WPF или я где-то испортился? Насколько я понимаю, я изменяю масштаб InkCanvas, а не размеры ScrollViewer с помощью ползунка.

1 ответ

Решение

Применить масштабное преобразование к изображению вместо InkCanvas

<ScrollViewer DockPanel.Dock="Top">
            <InkCanvas Name="InkCanvasOnImage" Height="203">

                <Image Source="AddImageSourceHere">
                    <Image.LayoutTransform>
                        <ScaleTransform ScaleX="{Binding ElementName=ZoomSlider,Path=Value}" ScaleY="{Binding ElementName=ZoomSlider,Path=Value}"></ScaleTransform>
                    </Image.LayoutTransform>
                </Image>

            </InkCanvas>
        </ScrollViewer>

        <Slider DockPanel.Dock="Top" Name="ZoomSlider" Value="1" Minimum="0.3" Maximum="3" Height="20" />
Другие вопросы по тегам