Try adding a surrounding Grid
to apply size constraints to the Image
and then just layer the Canvas
over the stretched 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>