Section courante

A propos

Section administrative du site

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