C# 在WriteableBitmap上调用GetPixel()时System.IndexOutOfRangeException private void selectColor\u操纵delta(对象发送方,操纵deltaeventargs e) { xMove+=e.DeltaManipulation.Translation.X; yMove+=e.DeltaManipulation.Translation.Y; 双xMax=350; 双yMax=40; 如果(xMovexMax) { xMove=xMax; } if(yMoveyMax) { yMove=yMax; } int x=转换为32(xMove); int y=转换为32(yMove); var writeableBmp=新的WriteableBitmap(selectColor,null); var tempColor=writeableBmp.GetPixel(x,y); 笔刷图像颜色=新的SolidColorBrush(tempColor); txtBlockName.Foreground=imageColor; }
此函数用于在名为C# 在WriteableBitmap上调用GetPixel()时System.IndexOutOfRangeException private void selectColor\u操纵delta(对象发送方,操纵deltaeventargs e) { xMove+=e.DeltaManipulation.Translation.X; yMove+=e.DeltaManipulation.Translation.Y; 双xMax=350; 双yMax=40; 如果(xMovexMax) { xMove=xMax; } if(yMoveyMax) { yMove=yMax; } int x=转换为32(xMove); int y=转换为32(yMove); var writeableBmp=新的WriteableBitmap(selectColor,null); var tempColor=writeableBmp.GetPixel(x,y); 笔刷图像颜色=新的SolidColorBrush(tempColor); txtBlockName.Foreground=imageColor; },c#,xaml,windows-phone-8,writeablebitmap,C#,Xaml,Windows Phone 8,Writeablebitmap,此函数用于在名为selectColor的画布中单击并拖动时处理操纵增量yMove和xMove是记录总移动量的两个双倍值。它们是在函数之前声明的。正如标题所述,我得到一个索引autofrangeexception,它指向x。我不明白这是怎么可能的,因为我已经设置了画布中的最大/最小值。我的画布正好是350x40,所以当x=180时,它不应该给我这个错误。我现在有点困惑,任何帮助/建议都将不胜感激。将限制设置为 private void selectColor_ManipulationDelta(o
selectColor
的画布中单击并拖动时处理操纵增量yMove
和xMove
是记录总移动量的两个双倍值。它们是在函数之前声明的。正如标题所述,我得到一个索引autofrangeexception
,它指向x。我不明白这是怎么可能的,因为我已经设置了画布中的最大/最小值。我的画布正好是350x40,所以当x=180时,它不应该给我这个错误。我现在有点困惑,任何帮助/建议都将不胜感激。将限制设置为
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;
}
0。。349=350像素0 .. 39=40像素
当您将xMove和yMove设置为实际的最大值时,您将被关闭一次谢谢,伙计,完全忽略了这一点。修正了这个问题,当我看到winphone8标签时,我会接受答案。
double xMax = 349;
double yMax = 39;