ASM/DELPHI DESSINER UN PIXEL EN ASSEMBLEUR

balgrim Messages postés 52 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 28 octobre 2003 - 25 juin 2003 à 12:15
jlmcom Messages postés 57 Date d'inscription mercredi 4 août 2004 Statut Membre Dernière intervention 3 décembre 2004 - 6 sept. 2004 à 18:36
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/15306-asm-delphi-dessiner-un-pixel-en-assembleur

jlmcom Messages postés 57 Date d'inscription mercredi 4 août 2004 Statut Membre Dernière intervention 3 décembre 2004 2
6 sept. 2004 à 18:36
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
balgrim Messages postés 52 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 28 octobre 2003
25 juin 2003 à 12:15
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);
var
p1:pointer;
begin
if (X>Bitmap.Height-1) or (Y>Bitmap.Width-1) then exit;
p1:=Bitmap.ScanLine[X-1];
case Bitmap.PixelFormat of
pf32bit:
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;
else
bitmap.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 ;)
Rejoignez-nous