Как определить цвет пикселя System.Windows.Controls.Image? - PullRequest
0 голосов
/ 26 апреля 2010

У меня есть изображение из (System.Windows.Controls.Image).

Это изображение расположено на главном холсте.

Я хочу определить значение альфа-канала курсора мыши, когда я нажимаю на любую часть этого изображения.

Когда я делаю что-то вроде следующего, я получаю исключение. {"Значение не попадает в ожидаемый диапазон."} 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 голосов
/ 27 апреля 2010

Метод, который я изложил, сработал. Проблема заложена в фактической позиции самого курсора мыши. Позиция, которая возвращалась в моем методе, была относительно главного окна. Это нужно было преобразовать в основной холст. Как только это было сделано, опубликованный код работал нормально. Я мог бы проверить значение pixel [3], чтобы определить цвет моего альфа-канала.

0 голосов
/ 26 апреля 2010

Почему вы не используете CopyPixels непосредственно в BitmapSource?

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

Кроме того, ты уверен, что твой шаг действительно 4? Stride действительно включает отступы.

...