为什么UniformToFill不起作用?

时间:2014-05-08 16:17:48

标签: wpf xaml

我有这个xaml:

<Border  Grid.Row="3"  Margin="0" Background="Transparent" ClipToBounds="true" >
            <Canvas RenderTransformOrigin="0.5,0.5" >
                <Image  Source="{Binding ImageSource}" Stretch="UniformToFill"  HorizontalAlignment="Stretch"
                        VerticalAlignment="Stretch" RenderTransformOrigin="0.5,0.5" cal:Message.Attach="[Event MouseLeftButtonDown] = [Action MouseLeftButtonDown($source, $eventargs)];
                                [Event MouseLeftButtonUp] = [Action MouseLeftButtonUp($source, $eventargs)];
                                [Event MouseMove] = [Action MouseMove($source, $eventargs)]" >


                </Image>


                <Line  X1="1" Y1="1" X2="400" Y2="400" Stroke="Black" StrokeThickness="20" IsHitTestVisible="False"/>


                <Canvas.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform ScaleX="{Binding Scale}" ScaleY="{Binding Scale}" />
                        <TranslateTransform X="{Binding TranslateX}" Y="{Binding TranslateY}" />
                    </TransformGroup>
                </Canvas.RenderTransform>
            </Canvas>
        </Border>

在这个xaml中,Stretch =&#34; UniformToFill&#34;在图像上不起作用,但是扼杀,它正在这个工作:

<Border  Grid.Row="3"  Margin="0" Background="Transparent" ClipToBounds="true" >
            <!--<Canvas RenderTransformOrigin="0.5,0.5" >-->
                <Image  Source="{Binding ImageSource}" Stretch="UniformToFill"  HorizontalAlignment="Stretch"
                        VerticalAlignment="Stretch" RenderTransformOrigin="0.5,0.5" cal:Message.Attach="[Event MouseLeftButtonDown] = [Action MouseLeftButtonDown($source, $eventargs)];
                                [Event MouseLeftButtonUp] = [Action MouseLeftButtonUp($source, $eventargs)];
                                [Event MouseMove] = [Action MouseMove($source, $eventargs)]" >


                </Image>


                <!--<Line  X1="1" Y1="1" X2="400" Y2="400" Stroke="Black" StrokeThickness="20" IsHitTestVisible="False"/>-->


                <!--<Canvas.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform ScaleX="{Binding Scale}" ScaleY="{Binding Scale}" />
                        <TranslateTransform X="{Binding TranslateX}" Y="{Binding TranslateY}" />
                    </TransformGroup>
                </Canvas.RenderTransform>
              </Canvas>-->
        </Border>

我删除了图片父画布。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

尝试添加周围的Grid以将尺寸限制应用于Image,然后将Canvas分层到拉伸的Image上。

<Border  Grid.Row="3"  Margin="0" Background="Transparent" ClipToBounds="true" >
    <Grid RenderTransformOrigin="0.5,0.5" >
        <Grid.RenderTransform>
            <TransformGroup>
                <ScaleTransform ScaleX="{Binding Scale}" ScaleY="{Binding Scale}" />
                <TranslateTransform X="{Binding TranslateX}" Y="{Binding TranslateY}" />
            </TransformGroup>
        </Grid.RenderTransform>
        <Image  Source="{Binding ImageSource}" Stretch="UniformToFill"  HorizontalAlignment="Stretch"
                    VerticalAlignment="Stretch" RenderTransformOrigin="0.5,0.5" cal:Message.Attach="[Event MouseLeftButtonDown] = [Action MouseLeftButtonDown($source, $eventargs)];
                            [Event MouseLeftButtonUp] = [Action MouseLeftButtonUp($source, $eventargs)];
                            [Event MouseMove] = [Action MouseMove($source, $eventargs)]" >
        </Image>
        <Canvas>
            <Line  X1="1" Y1="1" X2="400" Y2="400" Stroke="Black" StrokeThickness="20" IsHitTestVisible="False"/>
        </Canvas>
    </Grid>
</Border>
相关问题