这是我的Java代码:
import java.awt.image.DataBuffer;
public class B extends DataBuffer
{
public float[][] a;
public float[] b;
public float[] a()
{
return this.b;
}
}
问题简单明了。什么是C#等效于java.awt.image.DataBuffer?
或者我是否需要备份一个级别并找到与java.awt.image等效的内容?
TIA,
KeithC
答案 0 :(得分:0)
听起来你正在尝试进行某种图像处理。您似乎需要直接访问位图的像素数据,因为方法调用太慢。
.NET为此目的提供了Bitmap.LockBits
。以下是如何使用它的示例:
var bmp = new Bitmap(width, height, PixelFormat.Format32bppArgb);
unsafe
{
var data = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
for (int y = 0; y < height; y++)
{
var b = (byte*) data.Scan0 + y * data.Stride;
for (int x = 0; x < width; x++)
{
var blue = b[4 * x];
var green = b[4 * x + 1];
var red = b[4 * x + 2];
var alpha = b[4 * x + 3];
// ... do whatever you want with these values ...
}
}
bmp.UnlockBits(data);
}
return bmp;
要使用此功能,您需要在项目中启用不安全代码。在项目属性中的“构建”选项卡上,启用选项允许不安全的代码。