Bonsoir à tous,
Depuis quelques temps, j'essaye de réaliser un capteur d'écran en temps réel et les seuls instructions que je sais vraiment utiliser sont Getpixel et Setpixel... seulement ils sont décidément beaucoup trop lent pour faire quoi que ce soit de viable.
Savez-vous comment je pourrai faire pour remplacer ces deux instructions par un code beaucoup plus rapide, s'il vous plaît?
//Voici un bout de mon code volontairement tronqué
//(certaines variables sont globales donc non définies ici)
void capture()
{
int hauteur, longueur;
hauteur = 200;
longueur = 250;
int i, j;
COLORREF Essaicaptureligne[50000];
GetCursorPos(&pt);
dc = GetDC( NULL );
Rectangle(Essaicaptureligne, pt.x-125, pt.y-100, longueur, hauteur);
ReleaseDC( NULL, dc );
dc = ::GetDC(GetDlgItem(Mainbox, IDC_SCREEN));
for (i = 0; i < hauteur; i++)
{
for (j = 0; j < longueur; j++) SetPixel(dc, j, i, Essaicaptureligne[j+(i*longueur)]);
}
ReleaseDC( GetDlgItem(Mainbox, IDC_SCREEN), dc );
}
COLORREF Pixel(int x, int y)
{
COLORREF cr = 0;
if( NULL != dc ) cr = GetPixel( dc, x, y );
return cr;
}
void Rectangle(COLORREF *sourceligne, int x, int y, int longueur, int hauteur)
{
for (int i=0; i<hauteur;i++)
{
for (int j=0; j<longueur; j++)
{
*sourceligne = Pixel(x+j, y+i);
sourceligne++;
}
}
}
/////////////////////////////////////////
Vous pouvez constater que je tente de mettre les informations obtenues via Getpixel dans un tableau à 2 dimentions pour pouvoir les manipuler. Et là, en l'occurence, je m'en sers pour les afficher dans une picturebox grâce à Setpixel.
Merci par avance pour vos éclaircissements :)