如何在画布上保持我的按钮位置相同?

时间:2014-01-22 19:03:05

标签: wpf canvas

我有一个WPF窗口,在后台有一个Image作为画布。这是一艘海盗船的照片。我希望按钮附加到图像上的某些点,即使窗口的大小发生变化也保持不变。使用固定的窗口大小,这很好。我可以选择热点,我的按钮会与图像上的相同位置保持联系吗?或者我是否使用按钮的百分比定位?

这对WPF来说可能有很多要求。

按钮位于画布顶部。

由于

2 个答案:

答案 0 :(得分:2)

假设您的背景图片根据窗口大小延伸,我会使用Converter并根据百分比设置Canvas.TopCanvas.Left

您可以编写自己的IValueConverter接受Canvas.HeightCanvas.Width的代码,也可以使用ConverterParameter来确定您想要该值的百分比,或者我有一个相当通用的{{3}如果您愿意,可以自由使用。

<Button Canvas.Top="{Binding ElementName=MyCanvas, Path=ActualHeight, Converter={StaticResource MathConverter}, ConverterParameter=@VALUE*.25}"
        Canvas.Left="{Binding ElementName=MyCanvas, Path=ActualWith, Converter={StaticResource MathConverter}, ConverterParameter=@VALUE*.25}" 
        ... />

(我忘了如果Height / WidthActualHeight / ActualWidth是更准确的值 - 您可能需要测试一个)

答案 1 :(得分:0)

你可以使用画布和按钮的共同祖先,给它一个固定的大小,并将其包装在Viewbox中。然后你可以让Viewbox照顾你。整个场景 - 按钮,图像和其他任何内容 - 将被缩放在一起,因此您无需手动调整任何定位。