检测Windows Phone 8.1中点击的像素颜色

时间:2015-12-19 02:40:57

标签: c# windows-phone-8.1 writeablebitmap

“图像”控件中有图像。当用户点击图像控件时,应该提取该精确像素的颜色。

这是msdn为 Windows Phone 8 提供的代码。 In Chroma Key Demo For Windows 8

private async void ViewfinderCanvas_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
    var point = e.GetPosition(ViewfinderCanvas);
    var bitmap = new WriteableBitmap((int)ViewfinderCanvas.ActualWidth, (int)ViewfinderCanvas.ActualHeight);

    using (var source = new CameraPreviewImageSource(App.Camera))
    using (var effect = new FilterEffect(source))
    using (var renderer = new WriteableBitmapRenderer(effect, bitmap, OutputOption.Stretch))
    {
        effect.Filters = new List<IFilter>()
        {
            new RotationFilter(_rotationFilter.RotationAngle)
        };

        await renderer.RenderAsync();

        var picked = bitmap.Pixels[((int)point.Y) * bitmap.PixelWidth + ((int)point.X)];

        _color = new Color
        {
            A = 0xFF,
            R = (byte)((picked & 0x00FF0000) >> 16),
            G = (byte)((picked & 0x0000FF00) >> 8),
            B = (byte)(picked & 0x000000FF)
        };
    }

    ColorBorder.Background = new SolidColorBrush(_color);
}

我编辑的代码,

private void FilteredView_Tapped(object sender, TappedRoutedEventArgs e)
   {
       var Point = e.GetPosition(FilteredView);

       var bitmap = new WriteableBitmap((int)FilteredView.ActualWidth, (int)FilteredView.ActualHeight);





        // ERROR HERE
           var picked = bitmap.Pixels[((int)Point.Y) * bitmap.PixelWidth + ((int)Point.X)];

           _color = new Color
           {
               A = 0xFF,
               R = (byte)((picked & 0x00FF0000) >> 16),
               G = (byte)((picked & 0x0000FF00) >> 8),
               B = (byte)(picked & 0x000000FF)
           };



   }

FilteredView是图像控制。我只需要指针的颜色,所以我不使用过滤器等,因为它在这里没有任何用处。功能也不需要是异步的。

错误说,'Windows.UI.Xaml.Media.Imaging.WriteableBitmap'不包含'Pixels'的定义。

项目模板是Windows Phone 8.1项目。

导入Lumia Imaging SDK(如果任何Bitmap类型存在冲突,则会提及)。

问题:这是否是正确的方法?如果是,那么使用WriteableBitmap类访问像素有什么可能的替代方法呢?

0 个答案:

没有答案