WPF 大图片平移拖动边界定义问题

E次奥 2017-12-26 10:28:01
最近在实现一个类似QQ图片查看器的东西,遇到一些问题,求各位帮忙;

图片用的变换缩放改变显示大小, 放大后,如何拖动才能让图片的边界不能进入窗体内部?
...全文
916 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack_z63 2018-07-16
  • 打赏
  • 举报
回复
废话不说,直接看下面代码:
private void Domousemove(Rectangle img, MouseEventArgs e)
{
if (e.LeftButton != MouseButtonState.Pressed)
{
return;
}
TransformGroup group = grid1.FindResource("Imageview") as TransformGroup;

TranslateTransform transform = group.Children[1] as TranslateTransform;
Point position = e.GetPosition(img);

var transform0 = group.Children[0] as ScaleTransform;
double xScale = transform0.ScaleX; //取出放大系数

double parentH = img.ActualHeight; //容器控件高
double parentW = img.ActualWidth; //容器控件宽
double yCount = parentH * yScale; //当前图像高
double xCount = parentW * xScale; //当前图像宽
double xRight = parentW - xCount; //容器与图像宽的差
double yBottom = parentH - yCount; //容器与图像高的差
double diffX = position.X - mouseXY.X; //当前申请的平移X分量
double diffY = position.Y - mouseXY.Y; //当前申请的平移Y分量
if (((transform.X + diffX) < xRight) || ((transform.Y + diffY) < yBottom) || ((transform.X + diffX) > 0) ||
((transform.Y + diffY) > 0))
{ //如果申请平移量使图像边界进入容器内则不执行平移
transform.X += 0;
transform.Y += 0;
}
else
{
transform.X += diffX; // m_PreviousMousePoint.X;
transform.Y += diffY; // m_PreviousMousePoint.Y;
}
mouseXY = position;

}
exception92 2017-12-29
  • 打赏
  • 举报
回复
描述过于简单,代码+贴图。

8,735

社区成员

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

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