如何确定System.Windows.Controls.Image的像素颜色?

时间:2010-04-26 18:39:09

标签: .net wpf colors

我有一个来自(System.Windows.Controls.Image)的图片。

此图像位于主画布上。

当我点击此图像的任何部分时,我想确定鼠标光标的Alpha通道值。

在执行以下操作时,我会遇到异常。 {“值不在预期范围内。”} System.Exception {System.ArgumentException}

代码:

try{
    CroppedBitmap cb = new CroppedBitmap(ac.displayImage.Source as BitmapSource,
                new Int32Rect((int)mousePoint.X,
                    (int)mousePoint.Y, 1, 1));                          

            byte[] pixels = new byte[4];


               cb.CopyPixels(pixels, 4, 0);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }

当用户点击主窗口时,会获得mousePoint.X和mousePoint.Y。有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

为什么不直接在BitmapSource上使用CopyPixels?

http://msdn.microsoft.com/en-us/library/ms616042(v=VS.100).aspx

此外,你确定你的步伐真的是4吗? Stride确实包括填充。

答案 1 :(得分:0)

我说的方法有效。问题出现在鼠标光标本身的实际位置。我的方法中返回的位置是相对于主窗口的。这需要转换为主画布。完成后,发布的代码运行正常。我可以检查像素[3]值来确定我的alpha通道颜色。