Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Windows Phone] Zoom sur une image

    6 juin 2012 à 12:05:28

    Bonjour à tous,

    j'ai besoin de pouvoir zoomer sur une image (avec les doigts) dans mon projet.
    J'ai regardé déjà plusieurs tutoriel mais aucun d'eux n'ont marchés pour moi :(
    Apparemment il faudrait installer le toolkit silverlight for windows phone, ce que j'ai fait mais ça ne marche pas d'avantage..

    mon xaml ressemble à ça :
    <!--LayoutRoot est la grille racine où tout le contenu de la page est placé-->
        <Grid x:Name="LayoutRoot" Background="Transparent">
            
            <!--TitlePanel contient le nom de l'application et le titre de la page-->
            <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
                <TextBlock x:Name="ApplicationTitle" Text="METRO LILLE" Style="{StaticResource PhoneTextNormalStyle}" FontFamily="Verdana" />
                <TextBlock x:Name="PageTitle" Text="Metro &amp; Tramway" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" FontFamily="Verdana" FontSize="50" />
                <Image Source="someSourceUrl" RenderTransformOrigin="0.5, 0.5" CacheMode="BitmapCache">
                    <Image.RenderTransform>
                        <CompositeTransform x:Name="transform" />
                    </Image.RenderTransform>
                        <toolkit:GestureService.GestureListener>
                            <toolkit:GestureListener PinchStarted="OnPinchStarted" PinchDelta="OnPinchDelta" />
                        </toolkit:GestureService.GestureListener>
                </Image>
    
            </StackPanel>
    


    Les lignes que le debuggeur souligne sont toutes celles qui commence par "toolkit:" (forcement, si il trouve pas le toolkit...)
    Comment dois-je faire pour que cela marche? Comment inclure le toolkit au projet?
    Autre méthode pour pouvoir zoomer? ^^

    Merci pour vos réponses
    • Partager sur Facebook
    • Partager sur Twitter
      7 juin 2012 à 13:03:13

      Salut, premièrement il me semble que le toolkit est déjà fourni avec le SDK 7.1 (pas tous à fait fait sûr, mais tu as bien fait de l'installer).

      Pour que les classes du toolkit soient accessibles dans ton fichier xaml, il faut ajout l'espace de nom suivant à la première balise du fichier (phone:PhoneApplicationPage)
      xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"


      Il faut aussi avoir référencé dans ton projet l'assembly Microsoft.Phone.Controls.Toolkit.
      • Partager sur Facebook
      • Partager sur Twitter
        12 juin 2012 à 15:03:36

        Ah d'accord merci je n'avais pas pensé à inclure la dll du toolkit dans le projet ^^"

        Sinon autre problème maintenant, assez... embarrassant, quand je zoom avec les deux doigts, le zoom s'effectue avec comme point de référence le centre de l'image.
        Ce que je veux dire c'est que je ne peux pas naviguer dans l'ensemble de mon image zoomée.
        J'ai vu une méthode avec le stackPanel mais je ne sais pas comment l'utilisé dans ce cas là...
        • Partager sur Facebook
        • Partager sur Twitter
          16 juin 2012 à 13:48:09

          J'ai trouvé comment ajouter le stackpanel sur mon image. Je peux ainsi naviguer dans son ensemble mais je n'arrive pas cette fois-ci à définir un zoom max et un zoom min de sorte que l'utilisateur ne vois pas l'image partir à trois km de l’écran quand il dezoom etc
          • Partager sur Facebook
          • Partager sur Twitter
            17 juin 2012 à 18:57:24

            Désolé je n'ai jamais utilisé ce composant, je ne peux pas t'aider avec :/
            Tu as regardé dans la doc, la page du composant, ou cherché dans googe (en anglais) sur ces choses qui te posent problème ?
            • Partager sur Facebook
            • Partager sur Twitter
              18 juin 2012 à 16:01:56

              Oui j'ai aussi cherché dans la doc anglaise notamment MSDN etc.
              Mais pas vraiment d'explication ni d'exemple ^^ pourtant c'est quelque chose de présent dans beaucoup d'application..
              Ça m'a d'ailleurs étonné qu'il n'existe pas un control déjà tout fait juste pour le zoom m'enfin bon.. ce n'est pas grave je vais chercher à contourner le problème.
              J'avais aussi vaguement entendu parlé du webbrowser dans d'autres technologies mais je ne sais pas si cela va marcher en c#.
              Merci quand même
              • Partager sur Facebook
              • Partager sur Twitter
                4 juillet 2012 à 19:42:07

                Salut :)

                En effet, l'approche la plus adéquate serait d'inclure Silverlight for Windows Phone Toolkit. Il contient notamment GestureService qui aidera pour les gestes tactiles. On l'applique sur une image de cette façon :

                <Image Source="someSourceUrl" RenderTransformOrigin="0.5, 0.5" CacheMode="BitmapCache">
                     <Image.RenderTransform>
                         <CompositeTransform x:Name="transform" />
                     </Image.RenderTranform>
                     <toolkit:GestureService.GestureListener>
                         <toolkit:GestureListener PinchStarted="OnPinchStarted" PinchDelta="OnPinchDelta" />
                     </toolkit:GestureService.GestureListener>
                 </Image>
                


                private void OnPinchStarted(object sender, PinchStartedGestureEventArgs e)
                {
                   initialAngle = transform.Rotation;
                   initialScale = transform.ScaleX;
                }
                
                private void OnPinchDelta(object sender, PinchGestureEventArgs e)
                {
                   transform.Rotation = initialAngle + e.TotalAngleDelta;
                   transform.ScaleX = initialScale * e.DistanceRatio;
                   transform.ScaleY = initialScale * e.DistanceRatio;
                }
                
                • Partager sur Facebook
                • Partager sur Twitter
                  12 juillet 2012 à 11:34:52

                  Bonjour,

                  Oui j'ai essayé cette méthode mais elle ne marche pas très très bien :(
                  En effet, tu peux zoomer avec les doigts c'est super mais tu peux pas te déplacer dans l'image. Alors j'ai mis en place un stack panel, histoire qu'on puisse se déplacer et voir ce que l'on veux sur l'image mais c'est la où je rencontre les pb :
                  - On ne peux pas mettre de Zoom Max (et min)
                  - Quand on se déplace sur la gauche ou sur la droite et selon le niveau de zoom on ne peux pas voir toute l'image
                  - etc..
                  Une solution pour ça? (En attendant j'ai utilisé le control webBrowser mais ce n'est qu'en dépannage.. Le jour où ma photo n'est plus sur le net je suis dans la .. :-° )
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [Windows Phone] Zoom sur une image

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown