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 :

Union de plusieurs figures


Sujet :

Windows Presentation Foundation

  1. #1
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut Union de plusieurs figures


    Finalement je me suis mis à WPF et vu que tout ce que je connaissait c'était les WinForms, il me faut tout réapprendre à partir de rien. En particulier, là je ne sais pas où chercher.
    J'aurai aimé créer une croix avec WPF. Ensuite, entourer cette croix (ou n'importe quelle autre forme) d'une bordure (noire par exemple) et la remplir avec un dégradé. Pour l'instant j'étais simplement partit dans cette direction :
    Code xml : 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
     
    <Border VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Name="ButtonContentDrawing" CornerRadius="2,2,2,2">
                        <Border.Background>
                            <DrawingBrush Stretch="Fill">
                                <DrawingBrush.Drawing>
                                    <DrawingGroup>
                                        <GeometryDrawing Brush="White">
                                            <GeometryDrawing.Geometry>
                                                <GeometryGroup FillRule="Nonzero">
                                                    <RectangleGeometry Rect="30,0,20,80"/>
                                                    <RectangleGeometry Rect="0,30,80,20"/>
                                                </GeometryGroup>
                                            </GeometryDrawing.Geometry>
                                        </GeometryDrawing>
                                        <DrawingGroup.Transform>
                                            <RotateTransform Angle="45" CenterX="40" CenterY="40"/>
                                        </DrawingGroup.Transform>
                                    </DrawingGroup>
                                </DrawingBrush.Drawing>
                            </DrawingBrush>
                        </Border.Background>
                    </Border>
    (le Border est nécéssaire).
    Mais bon, il me semble que c'est un peut ... pas ça. Comment fais-je pour entourer les deux rectangles d'une bordure, sans tracer deux bordures séparées (considérer comme une seule forme, car sinon on entoure les deux rectangles et ça fait un carré au milieu qui est entouré, j'en veux pas).
    Ensuite, si je peint ma forme, avec la rotation le dégradé ne sera plus du haut vers le bas alors que je veux qu'il demeure dans ce sens.

    So voilà, comment fait-je ?

    Merci d'avance

  2. #2
    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
    Points : 3 015
    Points
    3 015
    Par défaut
    Je suis pas sûr d'avoir compris ce que tu veux, mais pour dessiner des formes complexe, j'ai tendance à utiliser un Canvas comme conteneur (ça permet de gérer le z-index). Dedans je dessine les géométries et les positionnent ou je veux.
    http://msdn.microsoft.com/en-us/library/ms745818.aspx

    Pour ton cas, j'aurais dessiner une ellipse et la croix avec les rectangles que tu as fais (ou un polygone/polyline pour la croix)

    Les animations sont faites sur le canvas ou les formes géométriques selon ce que tu veux faire.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 44
    Points : 33
    Points
    33
    Par défaut
    effectivement mais pourquoi ne pas passer pas expression design tout simplement ?

    c'est au moins quarante fois plus intuitif que blend pour dessiner.

  4. #4
    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
    Points : 3 015
    Points
    3 015
    Par défaut
    Parce que tout le monde ne l'a pas (C'est pas donné tous ces p'tis outils ).

    Par contre il peut-être intéressant de voir le code xaml qui est produit pour ce genre de figure par exemple. Si tu as l'occasion de tester...

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Je n'utilise ni Expression Blend, ni Expression Design, mon XAML je le pond à la main (j'ai bien envie d'apprendre à bien m'en servir toute façon).

    Merci binoo les polygon c'est carrément plus facile à utiliser que s'amuser avec des rectangles
    Maintenant mon problème d'origine, "faire des unions" est légèrement différent.
    En fait, Si je fais ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <Polygon Points="0,0 40,0 40,40 0,40 0,0" Stroke="DarkGray" StrokeThickness="1">
    </Polygon>
    Si je remplit la propriété Fill, j'obtiens un carré. Cependant, je ne voudrais pas tout un carré mais plus une "couronne" (carrée)
    En fait, je souhaite obtenir la figure que l'on construit en enlevant un carré de coté 20 positionné au centre d'un carré de coté 40 (ce qui devrais me laisser mon carré avec un trou dedans). So, comment je fait la soustraction d'un polygon à un autre un XAML ?

  6. #6
    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
    Points : 3 015
    Points
    3 015
    Par défaut
    Une possibilité (mais dans l'absolu ce n'est pas comme ça qu'il voir les choses je pense) est de jouer avec l'épaisseur du bord StrokeThickness. Je donne cette idée car c'est peut-être pas trop prise de tête à mettre en place .

    Mais pour répondre vraiment à ta question il faut regarder du côté de FillRule. Ainsi tu vas pouvoir définir les règles de remplissage du polygone.
    http://msdn.microsoft.com/en-us/libr....fillrule.aspx

    Et je mets ce lien aussi pour info, où tu as la librairie des formes du namespace "System.Windows.Shapes" :
    http://msdn.microsoft.com/en-us/libr...ws.shapes.aspx

    [EDIT] Le plus simple est peut-être d'utiliser le Path pour le dessiner en faisant ainsi
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
          <Path Stroke="DarkGray" StrokeThickness="1" Fill="Red" >
            <Path.Data>
              <GeometryGroup>
                <RectangleGeometry Rect="10,10 20,20" />
                <RectangleGeometry Rect="0,0 40,40" />
              </GeometryGroup>
            </Path.Data>
          </Path>

  7. #7
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Bon ben je m'en suis sortit grâce au FillRule.
    Merci binoo

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

Discussions similaires

  1. insérer plusieurs figures
    Par Christinita dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 16/03/2009, 18h04
  2. [Avis] Vue avec union sur plusieurs tables
    Par adiGuba dans le forum Langage SQL
    Réponses: 0
    Dernier message: 22/09/2008, 11h50
  3. Réponses: 10
    Dernier message: 20/02/2008, 10h30
  4. Réponses: 4
    Dernier message: 05/02/2008, 21h00
  5. Union de plusieurs dictionnaires
    Par Loko dans le forum Général Python
    Réponses: 4
    Dernier message: 20/03/2007, 13h08

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