WriteableBitmap SetValue性能/ Texture2D SetData

时间:2012-02-17 11:43:21

标签: c# performance windows-phone-7 graphics writeablebitmap

我只是想知道是否有人知道(在wp7上的性能明智)逐像素更新WriteableBitmap的最佳方法......我可以看到Pixels.SetValue方法,它可以采用颜色和单个位置。但肯定更快的选择是首先设置一个数组,然后一次设置SetValue(theArray)...就像这样......

Int32[] pixels = bmp.Pixels;
for(Int32 y = 479; y > 0; y--)
    for (Int32 x = 0; x < 480; x++)
    {
        pixels[x + (y * 480)] = 0;
    }
bmp.Pixels.SetValue(pixels);

但似乎没有那个选项???

显然,我只是将一切都设置为黑色......但如果我想做更多......

所以基本上,我只想问一下,逐个像素地操作/创建位图的最佳方法是什么,并获得最佳性能? (想想在每个刻度上更新位图)

编辑:我刚注意到Texture2D.SetData&lt; Int32&gt;(theArray)有这个功能,任何人都可以评论这个性能吗?或者推荐一种更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以创建一个位图,为其提供一个字节数组。 Bitmap的一个构造函数允许这样做。查看thisthis

因此,最好的方法是在数组上运行并在需要时从中创建一个Bitmap。但是当然要绘制线条,圆圈等,最好使用一些绘图功能。