Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009
-
25 juil. 2006 à 20:02
Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009
-
11 sept. 2006 à 20:04
Bonjour,
Voila, je suis tomber sur un problème qui me fait m'arracher les cheveux
Je m'explique:
J'ai une pictureBox qui contient une grande image (SizeMode = Zoom), on va dire que c'est notre image de fond, et par dessus je peux déplacer une autre picturebox.
Le problème est que lorsque je passe en SizeMode = AutoSize, je voudrais que les coordonnées de la deuxieme picturebox soit mis- à l'echelle :s
J'ai bien essayer de jouer avec les pourcentage d'agrandissement ou de diminution, mais ça me sort des resultat farfelut !!!
cs_Bidou
Messages postés5486Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 15 août 2006 à 18:54
Oui c'est tout à fait possible, avec le TableLayoutPanel comme déjà dit 1000x !
Créer un nouveau projet (incorpore tes images comme dans le projet que tu as mis en téléchargement) puis ajoute ceci dans Form1 :
using
System;
using System.Windows.Forms;
namespace Test_Graphic
{
public partial class Form1 : Form
{
private TableLayoutPanel _tableLayoutPanel = newTableLayoutPanel();
private PictureBox _pBox = newPictureBox(); public Form1()
{
this.InitializeComponent();
this.Init();
}
Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009 25 juil. 2006 à 23:24
Le truc c'est que l'utilisateur place par exemple son image où il veut sur la picturebox de fond.
Au début cette picturebox de fond est en SizeMode = Zoom, mais si on passe en AutoSize, il faut que la picturebox que l'utilisateur à placer où il voulé, s'agrandisse (ça c'est bon je l'ai fait) mais aussi qu'elle se mette aux coordonnés mise à l'echelle (la dessus je calle!).
Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009 25 juil. 2006 à 23:31
Je n'arrive pas à voir comment la propriété Anchor marche, j'ai cliqué sur les 4 cotés pour voir, et là ça ne me déplace pas mon image ça m'agrandit la picturebox!!! :s
cs_Bidou
Messages postés5486Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 25 juil. 2006 à 23:40
Salut,
Euh, je ne sais pas si c'est ce que tu veux, mais une idée :
- S'abonner à l'event déclencher lors du resize
- Chercher si l'agrandissement a été plus grand en largeur ou hauteur
- Ajuster la largeur respectivement la hauteur en fonction du plus grand
Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009 25 juil. 2006 à 23:48
Sniff Bidou, c'est ce que je fais en ce moment et je me casse vraiment la tete dessus, donc je voudrais savoir si il y a pas un moyen de le faire automatiquement avant de me replonger dans les calculs
Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009 26 juil. 2006 à 13:06
Bidou c'est pour la taille que tu me donne ce principe?
Moi c'est surtout pour la position en faite, le principe que j'ai établit et qui ne marche pas fort c'est:
Je regarde le pourcentage d'agrandissement en largeur de mon image de fond, et j'applique ce poucentage sur la Position X de l'image qui est placé dessus.
Donc c'est pour ça que j'aimerai savoir si il y a une méthode qui fait ça en C#
Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009 26 juil. 2006 à 14:52
Erf, je m'en douté que ma question été pas forcément clair, je retente :
En faite, sur une image par exemple de 1000x1000, au début elle est en SizeMode Zoom, donc sa taille on va dire fait 500x500, là dessus je met une autre picturebox au coordonné 5:5, donc on est d'accord qu'a ce moment là si je repasse en SizeMode Autosize, j'ai donc mon image qui a doublé.
Donc normal, je double aussi la taille de l'image coller par dessus (pour l'echelle) mais aussi ça position. Et c'est donc la que je coince, je voudrais faire un truc propre donc voir si une métohde ou une propriété le fait
Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009 28 juil. 2006 à 16:30
Non je ne peux pas fournir le projet Bidou, désolé.
J'ai réussit a faire ce que je voulais malgrès un manque de précision dans les calculs, mais Bidou je vais prendre un exemple concret:
Tu vois par exemple dans internet explorer, les boutons genre "Réponse acceptée" (:p) quand tu agrandis ta fenetre ou que tu la resize, et bien il reste a l'echelle, si en taille réduite ils sont place au 3/4 de la page est bien quand la page va etre agrandit le bouton va rester au 3/4 de la page.
cs_Bidou
Messages postés5486Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 28 juil. 2006 à 19:50
Je ne suis pas sur de ce que tu veux.
Si tu créer une nouvelle form (taille 300; 300), tu mets un bouton en (150; 150).
Le but, c'est quoi? Si j'agrandis la form, il doit s'accrocher à un côté? C'est à dire par exemple rester à x pixel du bas de la fenetre, et y pixel de la droite, ou bien il doit garder la proportion? C'est à dire que s'il se trouvait à (150; 150) sur une fenetre de (300; 300) il doit se trouver à (400; 400) sur une fenetre de (800; 800) ?
Si t'es dans le premier cas, tu fais un anchor right, bottom.
Si t'es dans le second cas, faut calculer la position avant le resize, trouver la proportionnalité sur x et y (ici elle vaut 300/150 pour x et 300/150 sur y; c'est à dire 2 dans les deux cas) puis regarder la nouvelle grandeur à la fin du resize et faire le calcul à l'envers [nouvelles grandeur (800; 800) => (800/2; 800/2) => (400;400)]. Un peu moins facile à mettre en place...
Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009 29 juil. 2006 à 14:25
Voila Bidou, c'est le 2nd cas que je veux faire. Et donc oui j'ai du faire comme dit au message précédent les calculs que tu dis. Mais je perd de la précision de 2 ou 3 pixel, j'utilise pourtant du decimal mais bon c'est pas grave cela fait ce que je veux.
Mais donc j'aurai juste voulu savoir si y'avait une méthode ou une propriété qui fait ça automatiquement mais on dirait que non... tans pis ça me convient là mon truc :)
cs_Bidou
Messages postés5486Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 29 juil. 2006 à 15:04
Alors si tu travailles en .NET2, je pense que tu devrais pouvoir résoudre le problème assez proprement :
Pour cela, jettes un oeil du côté des Containers. Par exemple, avec un TableLayoutPanel j'ai réussi à faire ce que j'ai décrit ci-dessus sans ancun calcul...
Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009 30 juil. 2006 à 17:51
J'essaye...
Interessant mais sa marche comment? J'ai mis un bouton dedans histoire de comprendre, j'ai essayer avec la propriété Anchor voir si il pouvez ce déplacer en fonction du redimentionnement mais rien... :s
cs_Bidou
Messages postés5486Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 30 juil. 2006 à 18:09
Euh, tu poses un TableLayoutPanel sur ta form (la il te créer par défaut 4 quadrants) tu poses un bouton sur la cardrant tout en bas à droite par exemple, et c'est tout sauf erreur !