Bonjour,
Je suis en train de développer un logiciel de cartographie qui utilise des cartes au format bmp (elle font 2000 par 2000 pixels). elles sont assemblées entre elle pour former une carte bien plus grande (1Go de taille).
pour afficher la carte sur un TImage, je détermine quelles sont les fichiers utilisé, je les lit un par un dans un TImage temporaire, et pour chaque fichier, je fait une boucle For pour transferer les points du TImage temporaire vers le TImage de la Form.
Le probléme, c'est que j'aimerais calculer le tracé dans un TImage de trace de même dimension que le TImage de la form, puis transférer cette image de trace dans celle de la form. Je pourrais ainsi mettre dans la fonction Image.Paint, une fonction de transfert rapide de l'image de trace vers la form plutot que de tout recalculer.
je vous met la fonction de transfert de TImage temporaire vers le TImage de la form
xcc1,ycc1 représente le coin supérieur gauche de l'image TImage temporaire
xdd1,ydd1 représente le coin inférieur droit de l'image TImage temporaire
for i:=xcc1 to xdd1 do
begin
Application.ProcessMessages;
for j:=ydd1 to ycc1 do
begin
// coordonnée du point i,j (coordonnées écran) en coordonnées xi,yi (coordonnées générales)
{xi:=trunc((i*zoom)+xo1);
yi:=trunc(yo1-(j*zoom));
// xi,yi (coordonnées générales) en coordonnées xi,yi (coordonnées image carte)
xi:=xi-xcarte*CT_LongCarte;
yi:=CT_LongCarte-(yi-ycarte*CT_LongCarte);
}
xi:=trunc((i*zoom)+xo1-xcarte*CT_LongCarte);
yi:=trunc(CT_LongCarte-(yo1-(j*zoom)-ycarte*CT_LongCarte));
couleur:=FMain.ImageTemp.Canvas.Pixels[xi,yi]; // on prend la couleur d'image temp
FMain.ImageTrace.Canvas.Pixels[i,j]:=couleur; // on écrit la couleur
end; // fin j
end; // fin i
Ce type de fonctionnement est très lent et j'aimerais optimiser tout ca mais je ne vois pas comment faire.
Si quelqu'un pourrait me dire s'il existe une fonction permettant de copier plus rapidement une zone rectangulaire d'une image vers une autre. Et par la même, comment transférer une image vers une autre.
Merci pour vos réponse
Oniria