none
Nach dem Wechsel der Imagesource funktioniert die Tranform nicht mehr RRS feed

  • Frage

  • Hallo zusammen,

    ich bin dabei mir ein kleines Programm zu schreiben, um mir Bilder anzusehen.

    Bisher habe ich folgenden Code :

    1. WPF Fenster:

                <Border Name="Border8" Style="{StaticResource StyleBorder}" Canvas.Top="735" Canvas.Left="200"  Panel.ZIndex="7">
                    <Border.Background>
                        <ImageBrush Stretch="Uniform" ImageSource="T:/104.jpg">
                            <ImageBrush.RelativeTransform>
                                <ScaleTransform ScaleX="{Binding Path=Value, ElementName=SliderScale}" ScaleY="{Binding Path=Value, ElementName=SliderScale}"
                                                CenterX="{Binding Path=Value, ElementName=SliderX}" CenterY="{Binding Path=Value, ElementName=SliderY}" />
                            </ImageBrush.RelativeTransform>
                        </ImageBrush>
                    </Border.Background>
                </Border>
    
                
                
                <Grid Name="GridSlider" Panel.ZIndex="1000" Background="Transparent">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="22" />
                            <ColumnDefinition Width="1*" />
                            <ColumnDefinition Width="1*" />
                            <ColumnDefinition Width="22" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="22" />
                            <RowDefinition Height="1*" />
                            <RowDefinition Height="1*" />
                            <RowDefinition Height="50" />
                        </Grid.RowDefinitions>
    
                        <Grid.Triggers>
                            <EventTrigger RoutedEvent="Grid.MouseMove">
                                <EventTrigger.Actions>
                                    <BeginStoryboard>
                                        <Storyboard>
                                            <DoubleAnimation To="1" Storyboard.TargetName="SliderScale" Storyboard.TargetProperty="Opacity"<br/>                                          Duration="0:0:0:0.250" BeginTime="0:0:0:0" />
                                        <DoubleAnimation To="1" Storyboard.TargetName="SliderX" Storyboard.TargetProperty="Opacity"<br/>                                      Duration="0:0:0:0.250" BeginTime="0:0:0:0" />
                                        <DoubleAnimation To="1" Storyboard.TargetName="SliderY" Storyboard.TargetProperty="Opacity"<br/>                                      Duration="0:0:0:0.250" BeginTime="0:0:0:0" />
                                        </Storyboard>
                                   </BeginStoryboard>
    
                                </EventTrigger.Actions>
                            </EventTrigger>
                            <EventTrigger RoutedEvent="Grid.MouseLeave">
                                <EventTrigger.Actions>
                                    <BeginStoryboard>
                                        <Storyboard>
                                            <DoubleAnimation To="0" Storyboard.TargetName="SliderScale" Storyboard.TargetProperty="Opacity"<br/>                                         Duration="0:0:0:0.250" BeginTime="0:0:0:0" />
                                        <DoubleAnimation To="0" Storyboard.TargetName="SliderX" Storyboard.TargetProperty="Opacity"<br/>                                     Duration="0:0:0:0.250" BeginTime="0:0:0:0" />
                                        <DoubleAnimation To="0" Storyboard.TargetName="SliderY" Storyboard.TargetProperty="Opacity"<br/>                                     Duration="0:0:0:0.250" BeginTime="0:0:0:0" />
                                        </Storyboard>
                                    </BeginStoryboard>
    
                                </EventTrigger.Actions>
                            </EventTrigger>
                        </Grid.Triggers>
                        <!-- Schieberegler zur Vergrößerung und Positionierung -->
                        <Slider Grid.Column="2" Grid.Row="3" Name="SliderScale" Width="Auto" Minimum="1" Maximum="10"<br/>                     ToolTip="{Binding ElementName=SliderScale, Path=Value}"
                            Orientation="Horizontal" HorizontalAlignment="Stretch" TickFrequency="1" />    
                        <Slider Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="2" Height="20" Name="SliderX" Width="Auto" Minimum="0" Maximum="1"<br/>                     Orientation="Horizontal" IsDirectionReversed="False" Value="0.5" />
                        <Slider Grid.Column="0" Grid.Row="1" Grid.RowSpan="2" Height="Auto" Name="SliderY" Width="20" Minimum="0" Maximum="1"<br/>                      Orientation="Vertical" IsDirectionReversed="True" Value="0.5" />     
           </Grid>
    


    Soweit so gut. Mit den Slidern kann ich das Bild zoomen und verschieben. Funktioniert prima. Den Border habe ich gewählt, weil ein Rand um das Bild sehr nett ist.

    Nun möchte ich aber das Bild per C# Code ändern:

            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
    
    
                ImageBrush ib = new ImageBrush();
                ib.ImageSource =
                    new BitmapImage(
                        new Uri("t:/104.jpg", UriKind.Absolute)
                    );
    
              
                Border8.Background = ib;
            }
    


    Wenn ich aber nun die Slider bewege, tut sich nix (kein Zoom oder verschieben)

    Ich kenne mich mit C# und WPF nicht gut aus, und bin viel am rumprobieren. War schon total stolz als ich das mit den Slidern hinbekommen hatte, aber nun weiß ich nicht weiter.

     

    Hat jemand einen Lösungsansatz, oder bin ich total falsch drauf.

    Montag, 16. Januar 2012 19:04

Antworten

  • Hallo,

    Habe das ganze jetzt so gelöst, das ich zum anzeigen der Bilder kein Border-Background nehme sondern ein Image.

     

    • Als Antwort markiert sw72 Sonntag, 22. Januar 2012 18:48
    Sonntag, 22. Januar 2012 18:48