【问题标题】:Change Image Pixel color to Redor any other in Windows Phone 8在 Windows Phone 8 中将图像像素颜色更改为 Redor 任何其他颜色
【发布时间】:2014-10-17 17:00:00
【问题描述】:

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

这将是一个很大的帮助。

谢谢。

【问题讨论】:

  • 我检查了以下链接,但没有帮助我tech.pro/tutorial/660/…
  • 澄清一下,您正在开发 WP8 silverlight 项目或 winRT??
  • 检查this 一个。您提到的链接有什么问题?我觉得不错。
  • 谢谢,如果你得到了也请多发一些链接,在我发给那里的链接中,我在使用Bitmap时出错,WP8中没有Bitmap类

标签: c# windows-phone-8


【解决方案1】:

在此处查看我的解决方案,将图像转换为灰度。

Convert A Dynamic Bitmap To Gray Scale.


注意循环,我从像素阵列中解码每个红、绿、蓝像素,并用Buffer.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;
}

【讨论】:

  • 谢谢,但是这个解决方案是将图像转换为红色还是将红色转换为灰色?
  • @KinjanBhavsar 它将任何图像转换为黑白图像。我只是以AlignmentGrid图像为例(因为它默认包含在所有WP8.0项目中)
  • @KinjanBhavsar 将图像转换为灰度,看代码。我取所有 3 种颜色的平均值并将其设置为颜色,从而使其变为灰色。
  • 但是你能建议,如果我想将图像转换为红色或任何其他颜色吗?
  • @KinjanBhavsar 想一想。要转换为红色,只需将每个像素的其他颜色分量设置为零。您将只剩下图像的红色通道。
猜你喜欢
  • 2015-05-21
  • 2013-07-13
  • 1970-01-01
  • 2017-01-06
  • 2019-08-26
  • 1970-01-01
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多