J'ai int width, height;
et IntPtr data;
qui vient d'un pointeur char * non signé non géré et je voudrais créer un bitmap pour montrer les données d'image dans une interface graphique. S'il vous plaît considérer, que width
ne doit pas être un multiple de 4, je n'ai pas une "foulée" et mes données d'image est aligné en BGRA.Comment configurer un bitmap avec des données non gérées?
Le code suivant fonctionne:
byte[] pixels = new byte[4*width*height];
System.Runtime.InteropServices.Marshal.Copy(data, pixels, 0, pixels.Length);
var bmp = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
for(int i=0; i<height; i++) {
for(int j=0; j<width; j++) {
int p = 4*(width*i + j);
bmp.SetPixel(j, i, Color.FromArgb(pixels[p+3], pixels[p+2], pixels[p+1], pixels[p+0]));
}
}
Y at-il une manière plus directe pour copier les données?