Панорамирование изображения выходит за пределы области контейнера - PullRequest
1 голос
/ 19 октября 2011

Я делаю панорамирование холста изображения (с Image и маркировками на нем) в серебряном свете, как показано ниже. Панорамирование работает, но изображение выходит за пределы внешней границы по нижнему и правому краям над другими элементами управления в соседних ячейках сетки. Я не мог понять причину. Любые предложения будут очень полезны.

<Border Grid.Row="1" Grid.Column="0">
    <Grid  HorizontalAlignment="Stretch" Name="gridMain" VerticalAlignment="Stretch">
    <Border Name="borderImage"  BorderBrush="Black" BorderThickness="1" Height="Auto" Width="Auto" HorizontalAlignment="Left" VerticalAlignment="Top" >
        <StackPanel Name="spCanvasHolder" Grid.Row="0" Grid.Column="0" Height="Auto" HorizontalAlignment="Left" VerticalAlignment="Top">
        <Canvas  Name="canvasImage" Background="Transparent" Width="Auto" MouseWheel="canvasImage_MouseWheel" >
            <Image Canvas.Left="0" Canvas.Top="0" Height="Auto" Name="imgMain" Stretch="None" Width="Auto" HorizontalAlignment="Left" VerticalAlignment="Top" MouseLeftButtonDown="imgMain_MouseLeftButtonDown" MouseMove="imgMain_MouseMove" MouseLeftButtonUp="imgMain_MouseLeftButtonUp"/>
        </Canvas>
        </StackPanel>
    </Border>
        .
        .
    </Grid>
</Border>


private void imgMain_MouseMove(object sender, MouseEventArgs e)
{
    if (isLeftClicked && isPanningEnabled)
    {
        ....        
        Thickness currMargin = canvasImage.Margin;
        currMargin.Left += lLateralMove;
        currMargin.Top += lVerticalMove;
        canvasImage.Margin = currMargin;        
    }
}  

1 Ответ

1 голос
/ 19 октября 2011

Вам нужно применить отсечение, чтобы остановить рендеринг за пределами элемента управления. Взгляните на UIElement.ClipToBounds в WPF, но не на Silverlight. Как симулировать в Silverlight?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...