Je peux trouver de nombreux exemples sur la façon de le faire dans C++ géré mais aucun pour non géré. Je veux obtenir toutes les données de pixel aussi efficacement que possible, mais certaines des choses de scan0 dont j'ai besoin de plus d'informations sur afin que je puisse parcourir correctement les données de pixel et obtenir chaque valeur rgba de celui-ci.Verrouillage d'un bitmap GDI + en C++ natif?
J'ai en ce moment ceci:
Bitmap *b = new Bitmap(filename);
if(b == NULL)
{
return 0;
}
UINT w,h;
w = b->GetWidth();
h = b->GetHeight();
Rect *r = new Rect(0,0,w,h);
BitmapData *lockdat;
b->LockBits(r,ImageLockModeRead,PixelFormatDontCare,lockdat);
delete(r);
if(w == 0 && h == 0)
{
return 0;
}
Color c;
std::vector<GLubyte> pdata(w * h * 4,0.0);
for (unsigned int i = 0; i < h; i++) {
for (unsigned int j = 0; j < w; j++) {
b->GetPixel(j,i,&c);
pdata[i * 4 * w + j * 4 + 0] = (GLubyte) c.GetR();
pdata[i * 4 * w + j * 4 + 1] = (GLubyte) c.GetG();
pdata[i * 4 * w + j * 4 + 2] = (GLubyte) c.GetB();
pdata[i * 4 * w + j * 4 + 3] = (GLubyte) c.GetA();
}
}
delete(b);
return CreateTexture(pdata,w,h);
Comment puis-je utiliser lockdat pour faire l'équivalent de getPixel? Merci