balgrim
Messages postés52Date d'inscriptionvendredi 26 avril 2002StatutMembreDernière intervention28 octobre 2003
-
25 juin 2003 à 12:15
jlmcom
Messages postés57Date d'inscriptionmercredi 4 août 2004StatutMembreDerniè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.
jlmcom
Messages postés57Date d'inscriptionmercredi 4 août 2004StatutMembreDernière intervention 3 décembre 20042 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és52Date d'inscriptionvendredi 26 avril 2002StatutMembreDernière intervention28 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 ;)
6 sept. 2004 à 18:36
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
25 juin 2003 à 12:15
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 ;)