Introduction
Qu'est-ce donc que cette expression, un concept savant n'apportant qu'un nouvelle manière de traiter les mathématiques? Non, il s'agit de la technique utiliser pour faire rentrer des images dans une dimensions données malgré le fait qu'il n'y aurait pas assez de pixel par exemple pour l'afficher ou qu'au contraire, il y en aurait trop. En somme, il s'agit tout bonnement d'une technique pour faire entrer les images sur mesure!
Programmation
Un des «bout» de codes sources les plus répandu pour atteindre, l'objectif en question, est une technique de Sean Palmer, et fonctionnant exclusivement en mode 320x200 en 256 couleurs. Il est dans les faits peut efficace, il est toutefois facile à comprendre. Voici donc son apparence:
Type Fixed=Record
Case Boolean of
True:(L:LongInt);
False:(F:Word;I:Integer);
End;
Procedure ScaleBitmap(Var
BitMap;x,y,x1,y1,x2,y2:Word);
Var
A,I:Word;
sx,sy,cy,s:Fixed;
Map:Array[0..65521]of
Byte Absolute BitMap;
Begin
sx.l:=(x*$10000)div
Succ(x2-x1);
sy.l:=(y*$10000)div
Succ(y2-y1);
cy.i:=Pred(y);
cy.f:=$FFFF;
While cy.i>=0do
Begin
a:=y2*320+x1;
s.l:=(cy.i*x)*$10000;
For I:=x2-x1
downto 0do Begin
Mem[$A000:a]:=Map[s.i];
Inc(a);
Inc(s.l,sx.l);
End;
Dec(cy.l,sy.l);
Dec(y2);
End;
End;
Const
Bmp:Array[0..3,0..3]of
Byte=((0,1,2,3),(1,2,3,4),(2,3,4,5),(3,4,5,6));
Var I:Integer;
BEGIN
ASM
MOV AX,013h
INT 10h
END;
For I:=1
to 99do
ScaleBitMap(Bmp,4,4,0,0,I*2,I*2);
ASM
MOV
AX,03h
INT 010h
END;
END.
Dernière mise à jour : Dimanche, le 1 mai 2016