我有一个用户可以缩放/滚动的图像。
我想在不同的图层上画一些长方形/圆(例如:为图片中标识的每个人的脸画一个圆)。
矩形位置相对于图像。
如何创建这样的覆盖?

最佳答案

我也做了类似的事情:
将图像设置为背景
在上面放一个透明的
ItemsControl设置为ItemsControl.ItemsPanel
为拖动操作编写处理程序
代码段:

  <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>

09-25 17:48