2009-04-13 2 views
4

У меня есть изображение, которое пользователь может масштабировать/прокручивать. Я хочу нарисовать некоторые прямоугольники/круги на другом слое (например: нарисовать круг для лица каждого человека, который был идентифицирован на картинке).Наложение на изображение

Расположение прямоугольника относительно изображения.

Как создать такой накладной?

ответ

5

мне удалось сделать что-то подобное:

  • Установить изображение в качестве фона
  • Поместите прозрачный ItemsControl поверх него
  • Установите ItemsControl.ItemsPanel в Canvas
  • писал обработчик для перетаскивания операций

Фрагмент кода:

<ItemsControl x:Name="overlayItemsControl" 
     Background="Transparent" 
     ItemsSource="{Binding Path=Blocks}" 
     Width="{Binding ElementName=imageControl, Path=Width}" 
     Height="{Binding ElementName=imageControl, Path=Height}" 
     ItemContainerStyle="{StaticResource rectStyle}" 
     PreviewMouseMove="ItemsControl_PreviewMouseMove" 
     PreviewMouseDown="ItemsControl_PreviewMouseDown" 
     PreviewMouseUp="ItemsControl_PreviewMouseUp" 
     PreviewKeyDown="ItemsControl_PreviewKeyDown"> 

     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <Canvas IsItemsHost="True" /> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
    .... 
</ItemsControl> 
6

простой способ это просто использовать холст и установить холст фоновую собственность на вашу фотографию, а затем поместить ваши круги или прямоугольники на вершине, что и расположить их со свойствами Canvas.Left и .TOP ,

<Canvas x:Name="myCanvas"> 
     <Canvas.Background> 
      <ImageBrush ImageSource="c:\photo.bmp"/> 
     </Canvas.Background> 
     <Image Canvas.Top="20" Canvas.Left="20" Height="20" Width="20" Source="c:\circle.bmp"/> 
    </Canvas> 
Смежные вопросы