Deplacement en crollrect pour une loupe photo : une colle pour les matheux !
cs_ourso
Messages postés92Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention 5 décembre 2010
-
3 nov. 2008 à 16:26
cs_ourso
Messages postés92Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention 5 décembre 2010
-
3 nov. 2008 à 18:12
salut je réalise une petite appli qui permet d'afficher une photo plein format dans un Rectangle mis en scrol rect et la faire defiler en fonction de la position de la souris sur une version reduite de celle ci.
Tout fonctionne parfaitement sauf que je n'arrive pas à formuler un calcul.
Pour l'instant ce que je fais c'est une simple mise à l'echelle de la photo survolée à la photo originale.
soit
var ratio_aggrandissement:Number=taille_image_plein_format / taille_fenetre_survolee;
Bien sur la taille de mon rectangle est fixe et son format est sans rapport avec les photos présentées.
du coup j'aimerai modérer mon ration en fonction du format de l'image et de celui de mon Rectangle.
mais voilà là je sèche ! je sais pas comment calculer de chiffre modérateur et l'appliquer à mon ratio de départ ?
Je vois seulement que je vais devoir appliquer deux ratio séparés pour la hauteur et la largeur...
Merci de m'aider à garder un peu de cheveux sur la tête !
Steph
A voir également:
Deplacement en crollrect pour une loupe photo : une colle pour les matheux !
cs_ourso
Messages postés92Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention 5 décembre 2010 3 nov. 2008 à 17:17
ben non cher peg' !
J'aurais aimé que ce fusse si simple !
C'est cette bête regle de trois que j'applique justement déjà, et vu que le format de la photo et celui du rectangle ne sont pas les même il faut compenser avec un calcul qui prend en compte le format de l'image par rapport à celui de la fenêtre... et pour compliquer le tout que la le centre de la fenêtre loupe corresponde exactement au point donné par la souris... mais en fait ça c'est pas le plus dur !
J'imagine qui'il faudrait lui donner un calcul du genre :
Pour l'equivalent de la taille de la fenetre si le coté le plus grand de l'image faisait cette taille alors le plus petit coté aurait besoin d'un aggrandissement de tant pour remplir le reste de la fenetre...
Il faudrait que je puisse appliquer le resultat de ce calcul pour modérer chacun des ratio ... et ainsi que arrivé à chacun des bords de l'image cela corresponde bien à l'arrivée dans la loupe quelque soit son format à elle...
A suivre ?
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 3 nov. 2008 à 17:25
le résultat est le même. Il suffit que tu puisses définir le rectangle visible dans ta fenêtre de miniature, et de cette taille tu détermines les coordonnées d'affichage dans ta "loupe"
C'est un double rapport.
cs_ourso
Messages postés92Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention 5 décembre 2010 3 nov. 2008 à 17:42
Je vois ce que tu veux dire mais je voudrais conserver ces calculs à l'interieur de ma classe... et que celle dans laquelle elle s'imbrique n'ai aucun parametre de gestion de celle là.
voilà en l'état les trois methodes qui alimentent le mouvement... c'est dans demasquer(even:MouseEvent) que je crée mon ratio qui pour l'instant est assez fantaisiste mais retranscrit un peu l'idée que je voudrais lui appliquer... ça marche pour x mais pour y c'est n'importe quoi !
public function moving(even:MouseEvent):void
{
if (ratio_deplacement_x.valueOf()!=0)
{
var FinalX:Number = Number(even.localX * ratio_deplacement_x);
var FinalY:Number = Number(even.localY * ratio_deplacement_y);
if (!interpolation_x.isPlaying)
{
interpolation_x = new Tween(leurre_tween, Tweenables.X,
Exponential.easeOut, rectangle_scroll.x, FinalX, 20, false);
cs_ourso
Messages postés92Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention 5 décembre 2010 3 nov. 2008 à 18:04
en fait la fonction demasquer devrait plutot ressembler à un truc comme ça :
public function demasquer(even:MouseEvent)
{
var ratio_aggrandissement:Number;
var compensation:Number;
var largeur_image:Number = limiteur_x;
var hauteur_image:Number = limiteur_y;
CortoHHasur
Messages postés54Date d'inscriptionvendredi 24 octobre 2008StatutMembreDernière intervention19 novembre 2008 3 nov. 2008 à 18:08
tu dis que ca fonctionne pour x mais pas y? parceque x est certainement ta plus grande mesure, et donc la transformation est moindre que sur y.
a nouveau, je vais peut-etre dire une betise, mais tu as un scroll sur x et y? seul ton rectangle/clip qui affiche le zoom est fixe dans ses dimensions. rien ne t'empeche de faire "depasser" ton image agrandie, de chaque cote de ton rectangle d'affichage, et que les utilisateurs se servent du scroll ou de la souris pour deplacer ton agrandissement.
pour ton code, je suis deja pas bien lourd en AS2, mais en AS3 je debute tout juste..
cs_ourso
Messages postés92Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention 5 décembre 2010 3 nov. 2008 à 18:12
le principe de ma classe c'est de loader l'image hq d'une reférence image et d'afficher un zoom losque l'on passe sur un aggrandissement intermediaire...
je cherche pas à avoir un fonctionnement type google map...
Déjà merci à toi et à peg' pour votre sollicitude ..