栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

平移和缩放图像

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

平移和缩放图像

我解决此问题的方法是将图像的ClipToBounds属性设置为True,将其放置在Border中。然后将图像上的RenderTransformOrigin设置为0.5,0.5,以便图像开始在图像的中心缩放。RenderTransform也设置为包含ScaleTransform和TranslateTransform的TransformGroup。

然后,我处理了图像上的MouseWheel事件以实现缩放

private void image_MouseWheel(object sender, MouseWheelEventArgs e){    var st = (ScaleTransform)image.RenderTransform;    double zoom = e.Delta > 0 ? .2 : -.2;    st.ScaleX += zoom;    st.ScaleY += zoom;}

要处理平移,我要做的第一件事是处理图像上的MouseLeftButtonDown事件,捕获鼠标并记录其位置,我还存储了TranslateTransform的当前值,此值已更新以实现平移。

Point start;Point origin;private void image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){    image.CaptureMouse();    var tt = (TranslateTransform)((TransformGroup)image.RenderTransform)        .Children.First(tr => tr is TranslateTransform);    start = e.GetPosition(border);    origin = new Point(tt.X, tt.Y);}

然后,我处理了MouseMove事件以更新TranslateTransform。

private void image_MouseMove(object sender, MouseEventArgs e){    if (image.IsMouseCaptured)    {        var tt = (TranslateTransform)((TransformGroup)image.RenderTransform) .Children.First(tr => tr is TranslateTransform);        Vector v = start - e.GetPosition(border);        tt.X = origin.X - v.X;        tt.Y = origin.Y - v.Y;    }}

最后,不要忘记释放鼠标捕获。

private void image_MouseLeftButtonUp(object sender, MouseButtonEventArgs e){    image.ReleaseMouseCapture();}

至于调整大小的选择句柄,可以使用装饰器来完成,请查看本文以获取更多信息。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376969.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号