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

Silverlight Discussion :

Redimensionner une image présente dans une ellispe


Sujet :

Silverlight

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 20
    Points
    20
    Par défaut Redimensionner une image présente dans une ellispe
    Bonjour,

    j'avais ouvert il y a peu un sujet concernant l'affichage d'une image dans une ellipse (http://www.developpez.net/forums/d91...image-ellipse/).

    Le but de la cette manipulation est en fait d'afficher le visage d'une personne présente sur une photo pour ne garder que le visage. Pour se faire, j'utilise donc une ellipse (forme la plus rapprochée d'un visage) dans laquelle j'affiche la photo. Bien entendu, l'ellipse ne prend pas directement le visage de la personne et donc j'ai créé des boutons afin de zoomer sur le visage et faire pivoter l'image.
    Jusque là, pas de problème mais il arrive:
    Je pensais créer une ellipse contenant un rectangle qui lui contiendrait la photo. Ainsi je pourrais travailler sur le redimensionnement du rectangle et sa rotation en gardant et en stockant le rendu de l'image du rectangle dans l'ellipse.
    Malheureusement, je n'avais pas pensé qu'une ellipse ne pouvait être parent d'un autre élément.
    Auriez-vous une solution ou juste une idée sur laquelle je pourrais travailler ?

    Voici deux screenshots prisent depuis mon navigateur de ce que j'ai actuellement:



    Une fois l'image afficher, je voudrais pouvoir la redimensionner sans pour autant agrandir la taille de l'ellipse.

    Voici le code qui me permet d'afficher l'image dans l'ellipse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                OpenFileDialog windowOpen = new OpenFileDialog();
                windowOpen.Filter = "JPEG format|*.jpg|All files (*.*)|*.*";
                windowOpen.ShowDialog();
     
                FileInfo fileChosen = windowOpen.File;
     
                BitmapImage bmp = new BitmapImage();
                bmp.SetSource(fileChosen.OpenRead());
                elpsFace.Fill = new ImageBrush() { ImageSource = bmp };

  2. #2
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    J'ai un peu de mal comprendre ce que vient faire ton Rectangle dans ton ellipse mais si tu veux que ta photo puisse être transformer, il faudrait travailler sur ton ImageBrush en lui appliquant la transformation que tu souhaites (propriété Transform ou RelativeTransform).

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 20
    Points
    20
    Par défaut
    En effet, l'utilisation d'un rectangle dans une ellipse n'est pas une bonne solution, je m'en suis rendu compte.

    Merci de ta solution, je vais regarder çà.

  4. #4
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 20
    Points
    20
    Par défaut
    J'ai étudié ta solution et voici le code que j'ai écris lors d'un clique sur le bouton ScalePlus (Sc+ sur la screenshot).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void btnScalePlus_Click(object sender, RoutedEventArgs e)
            {
                Transform scalePlus = new ScaleTransform();            
                elpsFace.Fill = new ImageBrush { Transform = scalePlus };
            }
    Bien entendu cela ne fonctionne pas ce qui me semble logique puisque je ne dis jamais de combien je veux agrandir l'image. Le truc c'est que je ne vois pas comment faire pour dire d'agrandir l'image et je commence à tourner en rond après une journée de recherche.

    J'ai pensé à utiliser cette ligne de code suivante pour faire l'agrandissement (d'après la librairie MSDN):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scalePlus.ScaleX = scalePlus. ScaleX * 1.25 // pour augmenter la largeur de 25%
    Mais la méthode ".ScaleX" n'est pas pris en compte. Je ne pense pas qu'il me manque une directive using pourtant.

  5. #5
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    Bonjour,

    Je pense que cela devrait fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                elpsFace.Fill = new ImageBrush() 
                { 
                    Transform = new ScaleTransform() 
                    { 
                        ScaleX = 1.5, 
                        ScaleY = 1.5 
                    } 
                };

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 20
    Points
    20
    Par défaut
    Merci, tu m'as bien aidé

    Ca fonctionnait à peine donc je poste la réponse exacte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                elpsFace.Fill = new ImageBrush()
                {
                    ImageSource = bmp,
                    Transform = new ScaleTransform()
                    {
                        ScaleX = 1.5,
                        ScaleY = 1.7
                    }
                };
    Encore merci

  7. #7
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    de rien

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  2. Réponses: 0
    Dernier message: 07/06/2009, 12h31
  3. Réponses: 4
    Dernier message: 19/06/2008, 15h41
  4. position dans une image (selection dans une image)
    Par kaiseresis dans le forum Images
    Réponses: 3
    Dernier message: 31/05/2008, 13h30
  5. Telecharger une image présente dans une BDD à partir de PHP
    Par guillaumeIOB dans le forum Bibliothèques et frameworks
    Réponses: 58
    Dernier message: 02/04/2006, 15h42

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