在WPF画布中保持孩子的相对位置

我想实现以下功能。

我有一个内有几个UIElements的画布。 画布允许缩放和滚动应用比例和平移变换。

我想保持红色方块始终处于同一位置(画布左下角),以表现浮动控制,因此当我更改缩放或滚动时,红色方块始终保持它的大小和位置。 类似谷歌地图的东西“地球窗口”:

在这里输入图像描述

实施它的最佳方法是什么?

注意:我尝试使用WPF装饰器图层,但它不响应鼠标事件,我需要与红色方块进行交互。


正如克莱门斯所说,把它放在另一层上。 网格可以在同一单元格中托管多个项目,因此为您的画布创建一个1格栅格,然后在其上添加内容,就像其他任何WPF布局一样。 后面的项目出现在顶部(除非指定Z层):

<Grid>
    <Canvas>
        ... do all my fancy drawing
    </Canvas>
    <Rectangle VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="100" Height="100" />
</Grid>

请注意,如果画布具有任何非WPF呈现(例如视频或嵌入式WindowsForms内容),则可能会遇到问题。 我发现人们在绘制WPF的东西时遇到了麻烦。

我也相信你可以设置Canvas.Bottom="20"来设置相对于底边的位置,但我从来没有使用它。

链接地址: http://www.djcxy.com/p/64737.html

上一篇: Maintain relative position for child in a WPF canvas

下一篇: Best practice for displaying the same collection in multiple datagrid controls