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 :

Appliquer un Adorner sur un composant graphique [MVVM]


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Developpeur
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Par défaut Appliquer un Adorner sur un composant graphique
    Bonjour,

    J'aimerais mettre un adorner sur mon composant graphique.

    Mon problème est que la taille de mon adorner dépasse trop la taille de mon composant composant. J'ai remarqué sur codeproject.com que j'étais pas seul dans qui rencontre ce problème.

    Une solution est de mettre l'élément graphique dans une Grid pour forcer la taille de l'adorner, mais vous imaginez la galère si je suis obligé de mettre chaque composant graphique dans une Grid.

    Cordialement.

    MooNdR@K

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Poste ton code, sinon ça va être difficile de t'aider...

  3. #3
    Membre averti
    Profil pro
    Developpeur
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Par défaut
    Et voila mon code un bouton bien Adorner grâce à la Grid et un deuxième ou l'adorner fait n'importe quoi.

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <Window x:Class="WpfApplication4.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
        <Grid>
            <Grid Height="39" Width="98">
     
                <Button Content="ok !" Height="35" HorizontalAlignment="Left" Margin="0,4,0,0" Name="button1" VerticalAlignment="Top" Width="98"
     
                     FontWeight="Bold" FontSize="18" Foreground="#FF7A0000" />
            </Grid>
            <Button Name="button2" Content="Non ok" Margin="50,136,356,136" />
        </Grid>
    </Window>

    Code c# : 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
    38
    39
    40
    41
    42
    43
     
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Documents;
    using System.Windows;
    using System.Windows.Media;
     
    namespace WpfApplication4
    {
        // Adorners must subclass the abstract base class Adorner.
        public class SimpleCircleAdorner : Adorner
        {
            // Be sure to call the base class constructor.
            public SimpleCircleAdorner(UIElement adornedElement)
                : base(adornedElement)
            {
            }
     
            // A common way to implement an adorner's rendering behavior is to override the OnRender
            // method, which is called by the layout system as part of a rendering pass.
            protected override void OnRender(DrawingContext drawingContext)
            {
                Rect adornedElementRect = new Rect(this.AdornedElement.DesiredSize);
     
                // Some arbitrary drawing implements.
                SolidColorBrush renderBrush = new SolidColorBrush(Colors.Green);
                renderBrush.Opacity = 0.2;
                Pen renderPen = new Pen(new SolidColorBrush(Colors.Navy), 1.5);
                double renderRadius = 5.0;
     
                // Draw a circle at each corner.
                drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopLeft, renderRadius, renderRadius);
                drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopRight, renderRadius, renderRadius);
                drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomLeft, renderRadius, renderRadius);
                drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomRight, renderRadius, renderRadius);
            }
        }
     
     
    }

    et enfin le code behind

    Code c# : 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
    38
    39
    40
    41
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    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.Navigation;
    using System.Windows.Shapes;
     
    namespace WpfApplication4
    {
        /// <summary>
        /// Logique d'interaction pour MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
     
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                AdornerLayer adLayer1 = AdornerLayer.GetAdornerLayer(button1);
                SimpleCircleAdorner adorner1 = new SimpleCircleAdorner(button1);
     
                AdornerLayer adLayer2 = AdornerLayer.GetAdornerLayer(button2);
                SimpleCircleAdorner adorner2 = new SimpleCircleAdorner(button2);
     
                adLayer1.Add(adorner1);
                adLayer1.Add(adorner2);
     
            }
        }
    }

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    DesiredSize, c'est la taille souhaitée, pas forcément la taille réelle... Il faut utiliser RenderSize pour avoir la taille réelle du rendu.

  5. #5
    Membre averti
    Profil pro
    Developpeur
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Par défaut
    Merci beaucoup il me reste beaucoup à apprendre :s

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 19/11/2009, 10h34
  2. Réponses: 1
    Dernier message: 17/10/2008, 13h11
  3. Composant graphique (Graphe) sur une Image
    Par Aïssa dans le forum C#
    Réponses: 2
    Dernier message: 13/11/2007, 14h05
  4. effectuer des operations sur les composants graphiques
    Par Zorgz dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 19/10/2006, 14h34
  5. Réponses: 4
    Dernier message: 15/12/2005, 22h36

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