1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| PROCEDURE Redimensionne_image(sChamp_image est une chaîne, sChemin_image est une chaîne, bRedim_image est un booléen = Vrai, nNouvelle_largeur est un entier = {sChamp_image,indChamp}..Largeur, nNouvelle_hauteur est un entier = {sChamp_image,indChamp}..Hauteur)
bRedim_hauteur est un booléen = Faux
bRedim_largeur est un booléen = Faux
SI PAS ChampExiste(sChamp_image) ALORS
Info("le champ image " + sChamp_image + " n'existe pas")
RETOUR
FIN
SI PAS fFichierExiste(sChemin_image) ALORS
Info("l' image " + sChemin_image + " n'existe pas")
RETOUR
FIN
InfoImage est une chaîne = InfoBitmap(sChemin_image)
nLargeur est un entier = Val(ExtraitChaîne(InfoImage, 2))
nHauteur est un entier = Val(ExtraitChaîne(InfoImage, 3))
// On redimensionne le champ si l'image a une taille différente
SI {sChamp_image,indChamp}..Largeur <> nLargeur ALORS
{sChamp_image,indChamp}..Largeur = nLargeur
FIN
SI {sChamp_image,indChamp}..Hauteur <> nHauteur ALORS
{sChamp_image,indChamp}..Hauteur = nHauteur
FIN
{sChamp_image,indChamp} = sChemin_image
SI bRedim_image ALORS
// On commence par redimensionner le champ si il est plus petit que la nouvelle taille
SI {sChamp_image,indChamp}..Largeur < nNouvelle_largeur ALORS
{sChamp_image,indChamp}..Largeur = nNouvelle_largeur
bRedim_largeur = Vrai
FIN
SI {sChamp_image,indChamp}..Hauteur < nNouvelle_hauteur ALORS
{sChamp_image,indChamp}..Hauteur = nNouvelle_hauteur
bRedim_hauteur = Vrai
FIN
// On va redimensionner l'image de fond
// Si un seul des côtés est plus petit on teste si l'autre côté du champ est plus grand
// que l'image de fond
SI bRedim_largeur ET bRedim_hauteur ALORS
dRedimensionne({sChamp_image,indChamp}..Nom,nNouvelle_largeur * nNouvelle_largeur / nLargeur, nNouvelle_hauteur * nNouvelle_hauteur / nHauteur)
SINON
SI bRedim_largeur ALORS
SI {sChamp_image,indChamp}..Hauteur > nNouvelle_hauteur ALORS
dRedimensionne({sChamp_image,indChamp}..Nom, nNouvelle_largeur * nNouvelle_largeur / nLargeur, nNouvelle_hauteur)
{sChamp_image,indChamp}..Hauteur = nNouvelle_hauteur
SINON
dRedimensionne({sChamp_image,indChamp}..Nom, nNouvelle_largeur * nNouvelle_largeur / nLargeur, {sChamp_image,indChamp}..Hauteur)
FIN
FIN
SI bRedim_hauteur ALORS
SI {sChamp_image,indChamp}..Largeur > nNouvelle_largeur ALORS
dRedimensionne({sChamp_image,indChamp}..Nom, nNouvelle_largeur, nNouvelle_hauteur * nNouvelle_hauteur / nHauteur)
{sChamp_image,indChamp}..Largeur = nNouvelle_largeur
SINON
dRedimensionne({sChamp_image,indChamp}..Nom, {sChamp_image,indChamp}..Largeur / nLargeur, nNouvelle_hauteur * nNouvelle_hauteur / nHauteur)
FIN
FIN
FIN
// dernier cas : la largeur et la hauteur du champ sont plus grand que la largeur et la hauteur du redimensionnement
SI PAS bRedim_largeur ET PAS bRedim_hauteur ALORS
dRedimensionne({sChamp_image,indChamp}..Nom,nNouvelle_largeur,nNouvelle_hauteur)
{sChamp_image,indChamp}..Largeur = nNouvelle_largeur
{sChamp_image,indChamp}..Hauteur = nNouvelle_hauteur
FIN
FIN |
Partager