我有一个WPF窗口,在后台有一个Image作为画布。这是一艘海盗船的照片。我希望按钮附加到图像上的某些点,即使窗口的大小发生变化也保持不变。使用固定的窗口大小,这很好。我可以选择热点,我的按钮会与图像上的相同位置保持联系吗?或者我是否使用按钮的百分比定位?
这对WPF来说可能有很多要求。
按钮位于画布顶部。
由于
答案 0 :(得分:2)
假设您的背景图片根据窗口大小延伸,我会使用Converter
并根据百分比设置Canvas.Top
和Canvas.Left
。
您可以编写自己的IValueConverter
接受Canvas.Height
和Canvas.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
/ Width
或ActualHeight
/ ActualWidth
是更准确的值 - 您可能需要测试一个)
答案 1 :(得分:0)
你可以使用画布和按钮的共同祖先,给它一个固定的大小,并将其包装在Viewbox
中。然后你可以让Viewbox
照顾你。整个场景 - 按钮,图像和其他任何内容 - 将被缩放在一起,因此您无需手动调整任何定位。