Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止边框中的WPF图像平移过远_Wpf_Image - Fatal编程技术网

防止边框中的WPF图像平移过远

防止边框中的WPF图像平移过远,wpf,image,Wpf,Image,我有一个WPF图像在边框内我现在可以点击并拖动来平移图像。我想防止用户将图像拖离屏幕。也许在任何边界上至少应该显示100个像素。也就是说,如果用户一直向左拖动图像,大部分图像将消失,但100个像素仍将向边界的左边界伸出 以下是MouseMove和LeftClick事件的当前代码: private void img_Box_MouseMove(object sender, MouseEventArgs e) { if (!img_Box.IsMouseCap

我有一个WPF
图像
边框内
我现在可以点击并拖动来平移图像。我想防止用户将图像拖离屏幕。也许在任何边界上至少应该显示100个像素。也就是说,如果用户一直向左拖动图像,大部分图像将消失,但100个像素仍将向边界的左边界伸出

以下是MouseMove和LeftClick事件的当前代码:

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

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

我想我应该能够在上面设置一个非常简单的条件来实现我想要的结果,但是我不知道应该设置什么条件。

我猜
原点
是图像控件相对于边框的左上角吗?并且它的
X
Y
值不等于零,因为图像被拉伸(例如,has
Stretch=Uniform
)已更新以显示原点的初始化。