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 :

[WPF]BackgroundImage du System.Windows.Control


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Par défaut [WPF]BackgroundImage du System.Windows.Control
    Bonjour,

    voilà j'aimerai savoir comment définir une image de fond à mes composants héritant de System.Windows.Control en C# et non en XAML. Je veux faire un drag and drop, puis lors de l'évènement Drop, je veux attribuer l'image de l'évènement émetteur à l'élément System.Windows.Control. Voici mon code Move:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private void OnMouseMove( object sender, MouseEventArgs e )
    {
                Image image = e.Source as Image;
                DataObject data = new DataObject( typeof( ImageSource ), image.Source );
                DragDrop.DoDragDrop( image, data, DragDropEffects.Move );
    }
    Cordialement,

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    bah, tu fais juste (a adapter car je tape sans vérifier au niveau de la syntaxe):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monControl.Background = new ImageBrush { ImageSource = image };

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Par défaut
    Merci de ton aide, malheureusement ça ne marche pas :

    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
     
            void zone_Drop( object sender, System.Windows.DragEventArgs e )
            {
                if ( e.Data.GetDataPresent( typeof( ImageSource ) ) )
                {
                    e.Effects = DragDropEffects.Move;
                    ( sender as AirportZone ).Background = new ImageBrush
                    {
                        ImageSource =
                            e.Data.GetData( typeof( ImageSource ) ) as ImageSource
                    };
                }
                else
                {
                    e.Effects = DragDropEffects.None;
                }
    }

    Et voici AirportZone:
    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
        public class AirportZone : System.Windows.Controls.Control
        {
            public AirportZone( )
            {
                Id = new Guid( );
                AllowDrop = true;
                //HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
                //VerticalAlignment = System.Windows.VerticalAlignment.Center;
            }
     
            public Guid Id
            {
                get;
                set;
            }
     
            protected override void OnRender( System.Windows.Media.DrawingContext drawingContext )
            {
     
                drawingContext.DrawRectangle( Brushes.White, new Pen( Brushes.Black, 0.2 ),
                                              new Rect( RenderSize ) );
             }
    }

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Par défaut
    Résolu! Sytem.Windows.Control ne supporte pas un contenu direct, donc je suis passé par un ContentControl, puis:
    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
     
            void zone_Drop( object sender, System.Windows.DragEventArgs e )
            {
                if ( e.Data.GetDataPresent( typeof( ImageSource ) ) )
                {
                    e.Effects = DragDropEffects.Move;
                    ( sender as AirportZone ).Content = new Image
                    {
                        Source = 
                            e.Data.GetData( typeof( ImageSource ) ) as ImageSource 
                    };
                }
                else
                {
                    e.Effects = DragDropEffects.None;
                }
            }
    Merci de ton aide, tu m'as de tout de même mis sur la bonne voie!

    Cordialement

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

Discussions similaires

  1. Stretch horizontal sur un System.Windows.Controls.Image
    Par la_urre dans le forum Windows Phone
    Réponses: 2
    Dernier message: 27/07/2011, 16h27
  2. Réponses: 16
    Dernier message: 19/01/2011, 16h42
  3. [WPF]Sérializer un System.Windows.Control
    Par Babas007 dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 21/10/2010, 21h00
  4. Réponses: 5
    Dernier message: 11/11/2009, 16h01
  5. un control de gestion de systeme windows toute faite
    Par infostars dans le forum ASP.NET
    Réponses: 0
    Dernier message: 04/02/2009, 12h02

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