2015-04-21 2 views
1

Я хочу показать определенную область изображения в моем WPF-элементе управления. Предположим, что исходные размеры изображения 600x400, и я пытаюсь показать прямоугольник внутри этого изображения, расположенный на X = 420, Y = 330 с шириной = 60, высота = 40.WPF - Как увеличить определенную область изображения

Sample image

Так что я пытался использовать ScaleTransform и вычислить масштабный коэффициент, как 10, и RenderTransformOrigin до 0,75, 0,85.

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

является код:

<Grid> 
     <Button Width="600" Height="400"> 
     <Button.Template> 
      <ControlTemplate> 
       <Grid ClipToBounds="True"> 
        <Image Source="c:\temp\sample.bmp" Stretch="Uniform" RenderTransformOrigin="0.75, 0.85"> 
         <Image.RenderTransform> 
           <ScaleTransform ScaleX="10" ScaleY="10" /> 
         </Image.RenderTransform> 
        </Image>    
        </Grid> 
      </ControlTemplate> 
     </Button.Template> 
     </Button> 
    </Grid> 

Это результат: Result control

+0

Нужны ли изменения динамической области фокусировки (размер, местоположение)? – dymanoid

+0

@dymanoid да, мне нужно, чтобы это изменилось во время выполнения (изображение и область фокусировки) – avivr

ответ

2

Вы можете использовать CroppedBitmap:

<Image> 
    <Image.Source> 
     <CroppedBitmap Source="c:\temp\sample.bmp" SourceRect="420,330,60,40"/> 
    </Image.Source> 
</Image> 

Или вы используете ImageBrush с соответствующим Viewbox:

<Grid> 
    <Grid.Background> 
     <ImageBrush ImageSource="c:\temp\sample.bmp" 
        ViewboxUnits="Absolute" Viewbox="420,330,60,40"/> 
    </Grid.Background> 
</Grid> 
Смежные вопросы