Наложение на изображение
Вопрос
У меня есть изображение, которое пользователь может масштабировать/прокручивать.Я хочу нарисовать несколько прямоугольников/кругов на другом слое (например:рисуя круг для лица каждого человека, который был определен на картинке).
Положение прямоугольника относительно изображения.
Как создать такое наложение?
Решение
Мне удалось сделать нечто подобное:
- Установить изображение в качестве фона
- Поставь прозрачный
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>
Другие советы
Самый простой способ — просто использовать Canvas и установить свойство фона холста для вашей фотографии, а затем разместить круги или прямоугольники поверх нее и расположить их с помощью свойств 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>
Не связан с StackOverflow