j'ai fais un programme de zoom en C qui, a partir d'une image de type pic (50*50 max),
en fais un zoom x2 sur le coté et un zomm x1/2 en dessous et c'est quasi instantané.
Voila le code:
// C Source File
// Created 02/12/01; 15:57:33
#define OPTIMIZE_ROM_CALLS // Use ROM Call Optimization
#define SAVE_SCREEN // Save/Restore LCD Contents
#include <tigcclib.h> // Include All Header Files
short _ti89; // Produce .89Z File
short _ti92plus; // Produce .9XZ File
short x;
short y;
short color;
short show_picvar(char *SymName, short x, short y, short Attr)
{
SYM_ENTRY *sym_entry = SymFindPtr(SymName, 0);
if (!sym_entry) return FALSE;
if (peek(HToESI (sym_entry->handle)) != PIC_TAG) return FALSE;
BitmapPut(x, y, HeapDeref (sym_entry->handle) + 2, ScrRect, Attr);
return TRUE;
}
void _main(void)
{
ESI argptr;
short argtype = 0;
argptr = top_estack;
argtype = GetArgType(argptr);
ClrScr();
if (argtype != STR_TAG)
{
DlgMessage("ERREUR!","Argument inexistant ou d'autre type que 'str'",BT_OK,BT_NONE);
goto fin2;
}
if(show_picvar(GetSymstrArg(argptr),0,0,A_NORMAL)==FALSE)
{
goto erreur;
}
goto fin;
erreur:
DlgMessage("ERREUR!","l'image n'existe pas",BT_OK,BT_NONE);
goto fin2;
fin:
for (x=0;x!=50;x++)
{
for (y=0;y!=50;y++)
{
if(GetPix(x,y)==1)
{
DrawPix(x*2+50,y*2,A_NORMAL);
DrawPix(x*2+51,y*2,A_NORMAL);
DrawPix(x*2+50,y*2+1,A_NORMAL);
DrawPix(x*2+51,y*2+1,A_NORMAL);
}
}
}
for (x=0;x!=50;x=x+2)
{
for (y=0;y!=50;y=y+2)
{
color=0;
if(GetPix(x,y)==1)
{
color=color+1;
}
if(GetPix(x,y+1)==1)
{
color=color+1;
}
if(GetPix(x+1,y)==1)
{
color=color+1;
}
if(GetPix(x+1,y+1)==1)
{
color=color+1;
}
if(color>0)
{
DrawPix(x/2,y/2+65,A_NORMAL);
}
}
}
ngetchx();
fin2:
}
En espèrant que ca puisse t'aider
