none
Modifier l'abscisse et l'ordonnée d'un rectangleshape RRS feed

  • Question

  • Bonjour,

    j'ai créé un plateau d'un certain nombre de cases chacune représentée par une rectangleshape.

    Au premier clic sur l'un d'entre eux, je récupère son abscisse et son ordonnée dans deux variables, et au second clic sur un autre rectangleshape, je voudrais que l'abscisse et l'ordonnée du second prenne les valeurs de mes deux variables.

    J'ai donc le code suivant :

    //Premier rectangleshape

    Private Sub PionNoirA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PionNoirA.Click
            x = PionNoirA.Location.X
            y = PionNoirA.Location.Y
            nomcontrole = PionNoirA.Name
        End Sub

    //Second rectangleshape

    For Each Control In Me.Controls
                If Control.name = nomcontrole Then
                    Control.location.x = x
                    Control.location.y = y
                End If
    Next

    Or il semble que les rectangleshape ne fasse pas parti des controls...

    Quelqu'un peut-il éclairer ma lanterne????????????

    Cordialement


    Celui qui ne sait rien en sait autant que celui qui n'en sait pas plus!!
    lundi 28 mars 2011 19:34

Réponses

  • Bonjour,

     

    Pour les applications WPF, on peut utiliser ce code :

     

    For Each o As Object In Me.Grid1.Children

                If o.GetType() = GetType(System.Windows.Shapes.Rectangle) Then

                    If CType(o, Rectangle).Name = "Rectangle1" Then

                        Console.WriteLine(CType(o, Rectangle).Name)

                    End If

                End If

    Next

     

    En fait, un objet de type Shape ne peut pas être converti au Control, donc ces objets sont traités d’une manière différente. C’est pour cela qu’on utilise la classe la plus générique, Object.

    Il faut aussi définir la propriété Nom du Grid qui contient les rectangles.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     


    Suivez MSDN sur Twitter 

    • Marqué comme réponse guznat mercredi 30 mars 2011 15:12
    mardi 29 mars 2011 12:32

Toutes les réponses

  • Bonjour,

     

    Pour les applications WPF, on peut utiliser ce code :

     

    For Each o As Object In Me.Grid1.Children

                If o.GetType() = GetType(System.Windows.Shapes.Rectangle) Then

                    If CType(o, Rectangle).Name = "Rectangle1" Then

                        Console.WriteLine(CType(o, Rectangle).Name)

                    End If

                End If

    Next

     

    En fait, un objet de type Shape ne peut pas être converti au Control, donc ces objets sont traités d’une manière différente. C’est pour cela qu’on utilise la classe la plus générique, Object.

    Il faut aussi définir la propriété Nom du Grid qui contient les rectangles.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     


    Suivez MSDN sur Twitter 

    • Marqué comme réponse guznat mercredi 30 mars 2011 15:12
    mardi 29 mars 2011 12:32
  • Au premier clic sur l'un d'entre eux, je récupère son abscisse et son ordonnée dans deux variables, et au second clic sur un autre rectangleshape, je voudrais que l'abscisse et l'ordonnée du second prenne les valeurs de mes deux variables.

            x = PionNoirA.Location.X
            y = PionNoirA.Location.Y

    Bonjour,

    Pour avoir la dimension du premier, sauf à la réutiliser, ce n'est ps la peine de le mettre en variable, en faisant :

    largeur de 2 = largeur de 1
    et
    hauteur de 2 = hauteur de 1
    

    Ça devrait marcher.

     Concernant ta question stricto sensu "l'abscisse et l'ordonnée d'un rectangle", je ne crois pas que ce soit "location", ça c'est la position, mais davantage :

    Width et Height
    

    Cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    mardi 29 mars 2011 13:02
  • bonjour,

    Merci pour votre aide

    Cordialement, guznat


    Celui qui ne sait rien en sait autant que celui qui n'en sait pas plus!!
    mercredi 30 mars 2011 15:12
  • Bonjour,

    Pardonnez-moi de mon audace, mais votre code ne me renvoie q'une erreur, qui toutefois me gène, dans la mesure où je ne sais comment la régler :

    Le  Grid1.children, je ne sais pas à quoi il correspond. En fait, peut-être faut-il que je m'explique mieux :

    Je veux créer un jeu d'échecs en programmation objets. Pour ce faire j'ai crée toutes les cases avec des rectangleshape, ainsi que les images des différentes pièces.

    Coté objet, des procédures vérifient si l'abscisse et l'ordonnée de la pièce choisie permettent le déplacement du rectangleshape de l'image de la pièce sur le rectangleshape de la case choisie en second temps (ou lors du second clic).

    C'est pourquoi j'avais pensé récupérer dans des variables les abscisses et ordonnées de la première case (la pièce) pou leur donner, si le déplacement  est validé, les valeurs de la seconde case.

    Je comprens bien que les rectanglesshape sont des objets, et non de simples controls. Mais mon problème demeure cependant. Si vous pouviez encore m'accorder un peu de votre temps pour m'éclairer, ce serait très aimable à vous.

    Cordialement, guznat


    Celui qui ne sait rien en sait autant que celui qui n'en sait pas plus!!
    mercredi 30 mars 2011 17:46