В WPF просмотрите часть изображения - PullRequest
11 голосов
/ 04 февраля 2010

У нас есть изображение, в котором мы создаем координаты окна просмотра, которые являются точками смещения влево / вправо в пределах изображения, которые настроены для просмотра частей изображения в разное время в нашем приложении. В WPF, как мы загружаем изображение, и с верхними / нижними правыми точками в этом изображении, показываем только часть изображения в этом окне просмотра?

Ответы [ 3 ]

14 голосов
/ 27 января 2011

Вы можете сделать это с помощью CroppedBitmap:

<Image>
  <Image.Source>
    <CroppedBitmap Source="<path to source image>" SourceRect="20,20,50,50"/>
  </Image.Source>
</Image>

Это отобразит область изображения 50x50, начиная с позиции (20,20)

1 голос
/ 08 января 2016

Использование RenderTransform с клипом работает еще лучше, потому что CroppedBitmap довольно неизменен:

<Image x:Name="MyImage">
    <Image.RenderTransform>
        <TranslateTransform X="-100" Y="-100" />
    </Image.RenderTransform>
    <Image.Clip>
        <RectangleGeometry Rect="0 0 250 250" />
    </Image.Clip>
</Image>

При этом изображение будет отображаться со смещением (100, 100) с размером (150, 150), поэтому не забывайте, что прямоугольник должен включать начальные смещения.

Вот метод для расчета в коде:

public static void ClipImage(System.Windows.Controls.Image image, Rect visibleRect)
{
    image.RenderTransform = new TranslateTransform(-visibleRect.X, -visibleRect.Y);
    image.Clip = new RectangleGeometry
    {
        Rect = new Rect(
            0, 
            0, 
            visibleRect.X + visibleRect.Width, 
            visibleRect.Y + visibleRect.Height)
    };
}
0 голосов
/ 19 декабря 2011

Мне кажется, что вы можете сделать элемент управления изображением частью окна просмотра, как показано ниже:

<Viewbox Name="vBox" Stretch="None" HorizontalAlignment="Left" 
VerticalAlignment="Top" Height="50" Width="50">
<Image Name="ClippedImage" 
Source="{Binding NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True}" 
Stretch="None" />
</Viewbox>

Это даст вам окно просмотра 50х50. очевидно, вы можете изменить высоту и ширину в соответствии с вашими потребностями. Я использую прокрутку для просмотра меньшего окна просмотра.

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