1
private void selectColor_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
    {
        xMove += e.DeltaManipulation.Translation.X;
        yMove += e.DeltaManipulation.Translation.Y;

        double xMax = 350;
        double yMax = 40;

        if (xMove < 0)
        {
            xMove = 0;
        }
        else if (xMove > xMax)
        {
            xMove = xMax;
        }

        if (yMove < 0)
        {
            yMove = 0;
        }
        else if (yMove > yMax)
        {
            yMove = yMax;
        }

        int x = Convert.ToInt32(xMove);
        int y = Convert.ToInt32(yMove);

        var writeableBmp = new WriteableBitmap(selectColor, null);
        var tempColor = writeableBmp.GetPixel(x, y);
        Brush imageColor = new SolidColorBrush(tempColor);

        txtBlockName.Foreground = imageColor;
    }

当我在名为selectColor. yMove并且xMove是记录总运动的2个双打。它们是在函数之前声明的。正如标题所说,我得到一个IndexOutOfRangeException,它指向 x。我不明白这是怎么可能的,因为我已经设置了画布内的最大值/最小值。我的画布正好是 350x40,所以当 x = 180 时它不应该给我这个错误。我现在有点困惑,任何帮助/建议将不胜感激。

4

1 回答 1

2

将限制设置为

    double xMax = 349;
    double yMax = 39;

0 .. 349 = 350 像素
0 .. 39 = 40 像素

当您将 xMove 和 yMove 设置为实际的最大值时,您会变得与众不同

于 2013-05-07T11:47:58.883 回答