【发布时间】:2014-09-03 12:21:13
【问题描述】:
我正在将一些代码从使用 android-jhlabs library 的 Android 应用程序移植到 Windows Phone 8.1 运行时应用程序。
代码非常简单,基本上如下所示(在 Java 中):
PointillizeFilter filter = new PointillizeFilter();
filter.setEdgeColor(Color.BLACK);
filter.setScale(10f);
filter.setRandomness(0.1f);
filter.setAmount(0.1f);
filter.setFuzziness(0.1f);
filter.setTurbulence(10f);
filter.setGridType(PointillizeFilter.SQUARE);
int[] src = AndroidUtils.bitmapToIntArray(artWork);
src = filter.filter(src, width, height);
Bitmap destImage = Bitmap.createBitmap(src, width, height, Config.ARGB_8888);
在 Java 中:
public static int[] bitmapToIntArray(Bitmap bitmap){
final int bitmapWidth = bitmap.getWidth();
final int bitmapHeight = bitmap.getHeight();
int[] colors = new int[bitmapWidth * bitmapHeight];
bitmap.getPixels(colors, 0, bitmapWidth, 0, 0, bitmapWidth, bitmapHeight);
return colors;
}
我已将此函数转换为 C#,但有一点问题:
public static int[] bitmapToIntArray(BitmapImage bitmapImage)
{
int bitmapWidth = bitmapImage.PixelWidth;
int bitmapHeight = bitmapImage.PixelHeight;
int[] colors = new int[bitmapWidth * bitmapHeight];
// how to convert line below?
//bitmap.getPixels(colors, 0, bitmapWidth, 0, 0, bitmapWidth, bitmapHeight);
return colors;
}
查看文档,我看到很多不同的位图类:WriteableBitmap、BitmapImage、BitmapEncoder 和 BitmapDecoder。我没有找到适用于 Windows Phone 8.1 的 getPixel 类,但有一个适用于 Windows Store 应用程序的类。即使在那里,也只是为了获得一个像素。
createBitmap() 命令也是如此。我找不到任何等价物。
我的问题是,对于 Windows Phone 8.1,getPixels() 和 createBitmap() 命令是否有一行等效项?最好使用BitmapDecoder 吗?
【问题讨论】:
标签: c# windows-phone-8.1