WPF C#: Zusammenspiel zwischen ScrollViewer und Image, speziell beim "Zoomen" mittels ScaleTransform?

Beantwortet WPF C#: Zusammenspiel zwischen ScrollViewer und Image, speziell beim "Zoomen" mittels ScaleTransform?

  • Dienstag, 7. August 2012 21:04
     
      Enthält Code

    Hallo,

    Ich möchte eine BitmapImage mittels Image"Box" zoomen, also skalieren. Dies möchte ich noch mit einem ScrollViewer versehen.

    <UserControl x:Class="TrackWPF.MDI.MdiImageControl"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 d:DesignHeight="246" d:DesignWidth="300">
        <Grid>
          	<Slider x:Name="uiSlider" Minimum="0.1" Value="1" Maximum="4" Width="100" HorizontalAlignment="Stretch"></Slider>
            <ScrollViewer  Name="scrollViewer" Margin="0,0,0,33" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
                <ScrollViewer.RenderTransform>
                    <ScaleTransform 
                        ScaleX="{Binding ElementName=uiSlider, Path=Value}"
                        ScaleY="{Binding ElementName=uiSlider, Path=Value}"/>
                </ScrollViewer.RenderTransform>
            <Image Name="image"  Margin="0,0,0,33"  StretchDirection="Both" Stretch="Uniform">
            </Image>
            </ScrollViewer>
        </Grid>
    </UserControl>
    

    Ich habe RenderTransform über den ScrollViewer definiert, da sich durch Stretch="Uniform" das Bild am ScrollViewer orientiert.(Denke ich)

    So setzte ich die BitmapImage(vielleicht ja wichtig):

    public MdiImageControl(string path)
    {
                InitializeComponent();
    
                _pictureBmp = new BitmapImage(new Uri(path));
                image.Source = _pictureBmp;
                scrollViewer.Content = image;
    }

      

Alle Antworten