WPF 图片放大缩小移动

gajuesy126 2012-04-06 01:42:25
我做了一个程序,放一张图片,滚动鼠标放大后,移动图片,我想判断当图片边缘超过时,不能移动,就是不显示下面的空白背景,怎么判断???

if ( e.LeftButton != MouseButtonState.Pressed )
return;
var group = RightGD.FindResource( "ImageTransformResource" ) as TransformGroup;
var transform = group.Children[1] as TranslateTransform;
var ScaleTransform = group.Children[0] as ScaleTransform;

if ( ScaleTransform.ScaleX>1&&ScaleTransform.ScaleY>1 )
{
var position = e.GetPosition( rectangle );

double Width1=RightImg.ActualWidth;
transform.X += position.X - m_PreviousMousePoint.X;
transform.Y += position.Y - m_PreviousMousePoint.Y;
m_PreviousMousePoint = position;
}
...全文
327 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰尘灭 2012-04-08
  • 打赏
  • 举报
回复
不知道你用的什么容器装的图片,下面有个解决问题的思路,以前用到过控制容器内控件移动上,希望对你有帮助

1.在装图片的容器外层在包装一个Grid
2.针对图片容器进行 ScaleTransform 处理
3.当缩放时,对Grid的宽和高做对应处理, width=width* transform.X,height=height* transform.Y
4.通过判断此Grid的,位置,宽和高是否超过你的设定
在Windows系统中,notepad.exe(记事本)是一个“经典的”、“简洁的”文本编辑器。这个软件,没有华丽的外观,也没有繁杂的功能,仅仅是一个文本编辑小软件。虽然经过Windows系统数十年的变换,但它却保持着永恒姿态,数十年来几乎不曾改变过。曾经,VS中的经典DEMO中,就有它的身影,一个新建的项目,就藏有一个新建的“记事本”。然而,在WPF的项目中,“记事本”却消失的无影无踪,也许是很容易实现,也许是为了革新,而不愿再传承“经典”。确实,使用WPF技术再次让“记事本”复活,确实也是一件非常容易的事情。但是,如果,使用WPF技术,再搭配当下非常流行的MVVM模式呢?复活“记事本”的难度却陡然上升至很多WPF程序员为之默默叹气。而,MVVM模式是掌握WPF的最顶级技术,MVVM模式拥有的无尽的优势,让WPF相对于过往的编程模式来说,是一种革命性的创新,从而也成为大中型WPF项目中必须的模式。但,学习难度。。。。。。在这个《WPF记事本开发详解》的课程中,赵老师带领你在WPF中,从零开始一步步构建MVVM模式,直到让你亲自以WPF+MVVM的方式,让这个经典的“记事本”软件从你的手中“复活”。在课程中,赵老师会详细讲解WPF和MVVM中的各种技巧,让你从此爱上WPF+MVVM编程。

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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