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

Visual Studio Discussion :

Translation verticale d'un objet [Débutant]


Sujet :

Visual Studio

  1. #1
    Membre du Club
    Homme Profil pro
    Stagiaire THALES
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire THALES
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 48
    Points
    48
    Par défaut Translation verticale d'un objet
    Bonjour tout le monde,

    J'ai en fait un petit problème, je suis en train de réaliser une interface RADAR présentant certaine caractéristique, et l'une d'entre elle me pose problème. (Je travail sous Blend 4)
    Voila l'histoire je dois translater un carré vers le haut selon le mouvent d'un "Slider" et afficher la valeur dans une "TextBox", jusque là tout va bien, enfin presque.
    Nom : Carrés.png
Affichages : 273
Taille : 15,8 Ko
    En effet pour translater un objet vers le haut, l'ordonnée Y est négative. Je configure donc mon "Slider" de manière à translater le carré vers le haut.
    Seulement, je voudrais que la valeur qui soit afficher dans la "TextBox" soit positive (elle représente une distance), et étant donné que celle-ci est lié au "Slider", la valeur afficher est négative.
    Je débute un peu sur le logiciel, et aucuns moyen de trouver comment faire, pourriez-vous m'aider ?
    Merci d'avance !
    Images attachées Images attachées  

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    valeur absolue ?
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre du Club
    Homme Profil pro
    Stagiaire THALES
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire THALES
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Salut,

    valeur absolue ?
    C'est la première chose à laquelle j'ai pensé, mais je n'arrive pas à l'intégrer dans le code "XAML"...
    (A vrai dire jusqu'ici je n'avais pas trop touché au code, je me suis servis des outils que propose le logiciel, mais on dirait que j'ai mis le doigt sur quelque chose d'infaisable avec les outils.)

  4. #4
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Malheureusement je ne connais pas du tout la WPF, mais je pense que tout est faisable.
    Mets ton code ici, un gars plus calé viendra peut-être te dire comment faire (ou si j'ai le temps j'essaierai de voir).
    Plus je connais de langages, plus j'aime le C.

  5. #5
    Membre du Club
    Homme Profil pro
    Stagiaire THALES
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire THALES
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 48
    Points
    48
    Par défaut
    J'ai fait une simplification de l'application du coup, de sorte à ce qu'on est seulement le système ou je bloque, voila ce que ça donne en image :
    Nom : Capture.PNG
Affichages : 239
Taille : 4,9 Ko
    Et voila le code permettant d'avoir l'application ci-dessus :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" xmlns:ee="http://schemas.microsoft.com/expression/2010/effects"
    	x:Class="Test_rapprochement_des_carrés.MainWindow"
    	x:Name="Window"
    	Title="MainWindow"
    	Width="640" Height="480">
    	<Window.Resources>
    		<DataTemplate x:Key="ItemTemplate">
    			<StackPanel>
    				<CheckBox x:Name="checkBox" IsChecked="{Binding box}"/>
    			</StackPanel>
    		</DataTemplate>
    	</Window.Resources>
     
    	<Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource DataStore}}" RenderTransformOrigin="0.5,0.5">
    		<Rectangle Fill="#FF949DCC" Margin="0,184,227,216" Stroke="Black" RenderTransformOrigin="0.5,9" HorizontalAlignment="Right" Width="46">
    			<Rectangle.RenderTransform>
    				<TransformGroup>
    					<ScaleTransform/>
    					<SkewTransform/>
    					<RotateTransform/>
    					<TranslateTransform Y="{Binding Value, ElementName=slider, Mode=TwoWay}"/>
     
     
    				</TransformGroup>
    			</Rectangle.RenderTransform>
    		</Rectangle>
    		<Rectangle Fill="#FF949DCC" Height="46" Margin="0,0,227,149" Stroke="Black" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="46"/>
    		<Slider x:Name="slider" HorizontalAlignment="Left" Margin="81.5,199.5,0,214" Width="220.5" Maximum="-2" Minimum="-100" SmallChange="1" IsDirectionReversed="True"/>
    		<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="58.5" Margin="54.5,0,0,90.5"  Text="{Binding Value, ElementName=slider, Mode=TwoWay}" VerticalAlignment="Bottom" Width="117"/>
    		<TextBox HorizontalAlignment="Left" Height="57.5" Margin="54.5,0,0,29"  Text="{Binding Value, ElementName=slider}" VerticalAlignment="Bottom" Width="117"/>
    	</Grid>
    </Window>
    Mais le problème reste le même, comment changer la valeur contenue dans la "TextBox" en valeur positive ?

  6. #6
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Ah ouai ! Y'a pas du tout de code, ça fait bizarre
    Plus je connais de langages, plus j'aime le C.

  7. #7
    Membre du Club
    Homme Profil pro
    Stagiaire THALES
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire THALES
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Ah ouai ! Y'a pas du tout de code, ça fait bizarre
    Eh oui... C'est pour ça, je ne sais ni où récupérer la valeur contenue dans la "TextBox, ni où insérer quelque chose pour la modifier...
    Je coince pour le moment !

  8. #8
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Je viens de lancer un projet WPF sous VS pour voir.
    En fait il te crée bien un fichier cs avec, un peu comme un CodeBehind en ASP.NET
    Du coup tu dois pouvoir coller un handler sur l'event slide de ton slider et gérer le déplacement de ton rectangle "à la main" et en C#.
    Plus je connais de langages, plus j'aime le C.

  9. #9
    Membre du Club
    Homme Profil pro
    Stagiaire THALES
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire THALES
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Je viens de lancer un projet WPF sous VS pour voir.
    En fait il te crée bien un fichier cs avec, un peu comme un CodeBehind en ASP.NET
    Du coup tu dois pouvoir coller un handler sur l'event slide de ton slider et gérer le déplacement de ton rectangle "à la main" et en C#.
    J'ai essayé de faire comme ça, mais je dois avoir une erreur dans le code, voila ce que j'ai essayé :
    Dans le MainWindow je crée cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private void SLIDER_DISTANCE_Value
    Voila le code du MainWindow en entier :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Shapes;
     
    namespace Test_rapprochement_des_carrés
    {
    	/// <summary>
    	/// Logique d'interaction pour MainWindow.xaml
    	/// </summary>
    	public partial class MainWindow : Window
    	{
    		public MainWindow()
    		{
    			this.InitializeComponent();
     
    			// Insérez le code requis sur la création de l'objet à partir de ce point.
     
     
    		}
     
    		private void SLIDER_DISTANCE_ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<double> e)
    		{
    			// TODO*: ajoutez ici l’implémentation du gestionnaire d’événements.
    			this.RECT_AVION_CIBLE.RenderTransform.Transform.Y = -SLIDER_DISTANCE.Value; 
    		}
     
     
    	}
    }
    Mais dans la fenêtre ils me disent que la méthode "RenderTransform.Transform" n'est pas valide dans le contexte sélectionné. Je suis sure que c'est cette méthode qu'il faut utilisé.
    Me serais-je trompé sur le type de la fonction (private void SLIDER_DISTANCE_ValueChanged) ? A vrai dire j'ai choisi cette fonction en pensant que c'était celle qui était la plus proche de ce que je voulais faire, mais sans vraiment de convictions non plus !

  10. #10
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Après quelques tests j'ai ça qui fonctionne (je bouge un Button plutôt qu'un rectangle, mais l'idée est la même) :

    XAML (partie intéressante) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        <Grid>
            <Button Name="btn1" Content="control" HorizontalAlignment="Left" Margin="10,245,0,0" VerticalAlignment="Top" Width="75" MouseEnter="Button_MouseEnter" />
            <Slider HorizontalAlignment="Left" Height="22" Margin="10,288,0,0" VerticalAlignment="Top" Width="497" Minimum="0" Maximum="100" ValueChanged="Slider_ValueChanged"/>
     
        </Grid>
    C# (partie intéressante) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) {
    			TranslateTransform tt = new TranslateTransform(0, -e.NewValue );
    			this.btn1.RenderTransform = tt;
    		}
    Pour moi tu tapes le bon event du slider, là où ton code coince c'est sur l'utilisation des TranslateTransform

    HS : après ce premier test WPF ça semble assez sympathique. A voir à l'usage sur des gros projets.
    Plus je connais de langages, plus j'aime le C.

  11. #11
    Membre du Club
    Homme Profil pro
    Stagiaire THALES
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire THALES
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 48
    Points
    48
    Par défaut
    Génial ça fonctionne, en fait c'est bien mon code qui était mauvais... A vrai dire ça fait seulement 1 semaine que j'utilise le logiciel, et étant étudiant, je n'avais pas d’expérience en C# !
    Merci beaucoup pour tes réponses ça va beaucoup m'aider !
    A moi d’essayer d'en savoir plus sur le C# !

    Peut-être à bientôt !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/09/2011, 09h18
  2. enchainer des translations d'objets avec PCVUE
    Par Angelhell dans le forum Automation
    Réponses: 1
    Dernier message: 16/06/2011, 21h39
  3. Partage d'un objet translate dans le registre
    Par erehcab dans le forum Autres composants
    Réponses: 4
    Dernier message: 17/11/2009, 14h18
  4. parcourir un tableau d'objets verticalement
    Par elamarti dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 04/12/2008, 14h43
  5. Centrer verticalement les objet dans un flow layout ?
    Par Djobird dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 05/09/2008, 09h08

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