IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

rotation et calcul


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut rotation et calcul
    Bonjour,
    voici le probleme qui m'occupe en ce moment
    imaginons que nous ayons un rectangle dans un canvas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <Rectangle Fill="#FFFFFFFF" Stroke="#FF000000" HorizontalAlignment="Left"  Width="150" RenderTransformOrigin="0.5,0.5" Height="150" Canvas.Top="100" Canvas.Left="100">
    si je lui applique une rotation de 15° (ou 345 en vrai) comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <Rectangle.RenderTransform>
    <TransformGroup>
    <ScaleTransform ScaleX="1" ScaleY="1"/>
    <SkewTransform AngleX="0" AngleY="0"/>
    <RotateTransform Angle="15"/>
    <TranslateTransform X="0" Y="0"/>
    </TransformGroup>
    </Rectangle.RenderTransform>
    si je change le width du rectangle (en passant a 200 par exemple) les top et left du canvas de l'objet sont recalculé a Canvas.Top="106.547" Canvas.Left="99.151"

    j'aimerais savoir si vous avez une idée sur la formule de calcul pour les top et left
    j'ai bien tente un bo sinus cosinus mais pour le moment ca donne rien
    je vais finir par trouver mais si quelqu'un a deja vu le probleme lol

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 139
    Par défaut
    Bonjour,

    Je ne comprend pas ton problème.

    Normalement lorsque tu change la dimension, WPF retrace ton rectangle, en partant de sa version normale, puis en lui appliquant la rotation.

    Du coup le top et le left ne sont pas changés. Enfin ça à l'air d'être comme ça chez moi.

    Je me trompe?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Citation Envoyé par Ldoppea
    Normalement lorsque tu change la dimension, WPF retrace ton rectangle, en partant de sa version normale, puis en lui appliquant la rotation.

    Du coup le top et le left ne sont pas changés.
    En fait cela dépend du point d'origine de la transformation "RenderTransformOrigin". Aussi il faut surement quelque calcul "savant" pour déterminer les nouvelles position x et y

    nb: Si le point d'origine de la transformation est le point haut gauche, là, il ne doit pas y avoir de changement.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    oui mais si c'est au centre ca merdois severe lol
    ceci etant j'ai touve une solution avec un thumb encapsulé dans un contentcontrol sur un projet que j'ai etudié avec attention ....

    merci tt de meme pour vos informations

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 139
    Par défaut
    Mais l'origine de transformation n'est-elle pas au centre par défaut?

    Ikeas, tu aurait un screen du problème? Ça m'intrigue

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    mais avec plaisir d'ailleurs tu peux tester ca avec blend ca sera plus simple
    tu fait un carre (rectangle) de 150x150 sur un canvas d'une fenetre
    tu fixe le canvas.top et canvas.left a 100 par exemple

    comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    		<Canvas >
    		<Rectangle Fill="#FFFFFFFF" Stroke="#FF000000" HorizontalAlignment="Left"  Width="150" 
    		RenderTransformOrigin="0.5,0.5" Height="150"
    		 Canvas.Top="100" Canvas.Left="100">
    			<Rectangle.RenderTransform>
    				<TransformGroup>
    					<ScaleTransform ScaleX="1" ScaleY="1"/>
    					<SkewTransform AngleX="0" AngleY="0"/>
    					<RotateTransform Angle="15"/>
    					<TranslateTransform X="0" Y="0"/>
    				</TransformGroup>
    			</Rectangle.RenderTransform>
    		</Rectangle>
    		</Canvas>
    apres tu agrandi le rectangle comme ceci
    tu clique sur le carrer (en rouge)
    ca va agrandir (en vert)
    Nom : selector.PNG
Affichages : 59
Taille : 11,8 Ko

    tu aura le code suivant si tu agrandi par exemple a 200
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Canvas.Top="106.566" Canvas.Left="99.138"
    en fait j'avais fait un sélecteur qui se plaçait dessus l'uielement et qui permettais de le redimensionner comme cela
    Nom : selector1.PNG
Affichages : 48
Taille : 9,4 Ko

    mais bien sur avec les rotations ca déconnait .... (vu le changement top et left)

Discussions similaires

  1. Calculer la normale grace a trois angles de rotations plus un point.
    Par parp1 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 02/03/2007, 17h34
  2. AVL : calcul du déséquilibre après rotation
    Par Invité dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 22/02/2006, 21h34
  3. calculs mathematiques : rotation camera
    Par zax-tfh dans le forum OpenGL
    Réponses: 8
    Dernier message: 09/01/2006, 13h20
  4. Rotation erreur de calcul
    Par Speed41 dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 09/03/2005, 16h55
  5. calcul de rotation de coordonées
    Par ahoyeau dans le forum OpenGL
    Réponses: 10
    Dernier message: 05/03/2004, 14h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo