通过缩放和滚动在画布中保持孩子的位置-WPF

问题描述 投票:1回答:1

我想实现以下功能。

我有一个画布,里面有几个UIElementsCanvas允许应用比例缩放和滚动并转换变换。

enter image description here

我想将红色正方形始终保持在相同位置(Canvas的左下角),以充当浮动控件,因此当我更改缩放或滚动时,红色正方形始终保持其大小和位置。与Google地图“地球窗口”类似的东西:

enter image description here

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

[注意:我尝试使用WPF adorner layer,但是它不响应鼠标事件,因此需要与红色方块进行交互。

wpf canvas scroll zoom
1个回答
3
投票

[Clemens说,将其放在顶部的另一层中。 Grid可以在同一个单元格中托管多个项目,因此请像其他WPF布局一样,在Grid的顶部创建一个1 [1]的Canvas。后面的项目显示在顶部(除非指定了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"来设置相对于底边的位置,但我从未使用过。

© www.soinside.com 2019 - 2024. All rights reserved.