procedure MonSetPixel(handle : hdc;x,y:integer;couleur:TColor); asm // sauvegarde des registres pushad pushfd push eax push ebx mov ebx,eax // on dessine le point push couleur push y push x push handle call SetPixel //appel de la fonction setpixel //on recupere les registres mov eax,ebx pop ebx pop eax popfd popad end;
Ta source ne dessine pas un pixel, elle appelle l'api windows setpixel, et c'est elle qui le dessine... Bon voila un petit truc que j'ai fait, qui est bcp plus rapide que le pixel[x,y]:procedure MXPoint(Bitmap:TBitmap;X,Y:dword;color:dword);varp1:pointer;beginif (X>Bitmap.Height-1) or (Y>Bitmap.Width-1) then exit;p1:=Bitmap.ScanLine[X-1];case Bitmap.PixelFormat ofpf32bit: asm push edi mov edi,p1 mov eax,y shl eax,2 add edi,eax mov eax,color mov [edi],eax pop edi end;pf24bit: asm push edi mov edi,p1 mov eax,y imul eax,3 add edi,eax mov eax,color mov ecx,eax shr ecx,16 mov [edi],ax mov [edi+2],cl pop edi end;elsebitmap.Canvas.Pixels[X,Y]:=Color;end;Elle est pas toute a fait au point, il doit y avoir qque bug :) enfin vala la ça ecrit directement 1 pixel dans le bitmap ;)
Merci à vous Magic56 et balgrim pour votre contribution!je vais avoir besoin de me remettre un peu à l'assembleur: travail sur RAM vidéo, car je n'ai pas trouvé de fonction en delphi pour lire les tables du jeu de caractères en réserve.je suis de la génération Z80, alors vous comprenez ma déroute dans ce monde de vitesse Giga micropro!mais si passionnant!merci!jlmcom
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 974 831 membres 94 nouveaux aujourd'hui 16 316 membres club