viewbox 如何实现以中心点的缩放呢

weixin_38053367 2016-08-22 07:53:49
改变viewbox宽高后,中心点就开始偏移了,图片位置只要不再中间。就会一直朝一边歪
如何让viewbox的中心点固定,放大缩小都是朝4周的呢
...全文
17 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38067747 2016-08-23
  • 打赏
  • 举报
回复

Hi wpf萌新,
你说改变viewbox宽高后,中心点就开始偏移了。这个问题我觉得你需要分享相关的代码。这样我们可以更好的分析你的问题。



>>如何让viewbox的中心点固定 (改变viewbox宽高后),放大缩小都是朝4周的呢
你可以自定义一个ViewboxPanel,重写MeasureOverride 和 ArrangeOverride 方法,来实现放大缩小都是朝4周。 下面的代码你可以尝试。
public class ViewboxPanel : Panel { private double scale; protected override Size MeasureOverride(Size availableSize) { double height = 0; Size unlimitedSize = new Size(double.PositiveInfinity, double.PositiveInfinity); foreach (UIElement child in Children) { child.Measure(unlimitedSize); height += child.DesiredSize.Height; } scale = availableSize.Height / height; return availableSize; } protected override Size ArrangeOverride(Size finalSize) { Transform scaleTransform = new ScaleTransform(scale, scale); double height = 0; foreach (UIElement child in Children) { child.RenderTransform = scaleTransform; child.Arrange(new Rect(new Point(0, scale * height), new Size(finalSize.Width / scale, child.DesiredSize.Height))); height += child.DesiredSize.Height; } return finalSize; } }
<Grid> <local:ViewboxPanel Width = "60" Height="30" > <Button>Foo</Button> </local:ViewboxPanel> </Grid>

474

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧