在Windows Phone 8中将Image Pixel颜色更改为Redor

时间:2014-10-17 06:22:42

标签: c# windows-phone-8

我是Windows Phone *开发的新手,在我的项目中,我需要根据我的要求将图像像素转换为红色,绿色,紫色等颜色。任何人都可以发送示例代码来执行此过程吗?

这将是一个很大的帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

请参阅我的解决方案,将图像转换为灰度。

Convert A Dynamic Bitmap To Gray Scale


注意循环,我从像素阵列中解码每个红色,绿色,蓝色像素,然后用Buffer.BlockCopy重新组合图片。所以基本上你可以用你想要的那些组件修改你的图片然后BlockCopy它。


private void PutPixel(int x, int y, byte red, byte green, byte blue, ref WriteableBitmap wb)
{
    if(wb == null)
        return;
    int[] PixelsBuffer = new int[1];
    unchecked
    {
        PixelsBuffer[0] = (int)( 0xFF000000 | (int)red << 16 | (int)green << 8 | blue);
    }
    int offset = ((y * wb.PixelWidth) + x) * 4;
    Buffer.BlockCopy(PixelsBuffer, 0, wb.Pixels, offset, 4);            
}

代码在行动

<Image x:Name="myImage" Source="/Assets/AlignmentGrid.png" Stretch="None" />

// draw a white line from (0,0) to (100, 100)    
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
    WriteableBitmap wb = new WriteableBitmap((BitmapImage)this.myImage.Source);
    for (int i = 0; i < 100; i++)
    {
        PutPixel(i, i, 0xFF, 0xFF, 0xFF, ref wb);
    }
    myImage.Source = wb;
}

enter image description here