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 :

Image décalé lors de la réception en TCP (rectangle.Fill)


Sujet :

Silverlight

  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Par défaut Image décalé lors de la réception en TCP (rectangle.Fill)
    Bonjour,

    Je vous sollicite pour un problème que je rencontre lors de l'envoie d'une image par TCP.
    L'image en question est transmise depuis une application Silverlight, elle transite sur un serveur développé en C# chargé de router le flux TCP, et elle arrive enfin sur un deuxième client Silvelright mais cette fois complètement décalé. C'est à dire que lors de son import sur le rectangle (avec rectangle.Fill), une partie de l'image se décale sur la droite. Et ceci de façon aléatoire : parfois le quart de l'image, parfois la moitié ...
    J'ai fait une capture d'écran pour mieux vous décrire le problème.
    Vous remarquerez également un léger décalage en hauteur.
    (si l'image ne passe pas ici, cf pièces jointes)


    Pour la préparation de l'envoi j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WriteableBitmap monImage = new WriteableBitmap(rectangleEnvoi, null);
    Et j'utilise également la fonction ToByteArray pour la convertir avant l'envoi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ToByteArray(monImage);
     
    public static byte[] ToByteArray(this WriteableBitmap bmp)
    {
       int[] p = bmp.Pixels;
       int len = p.Length * 4;
       byte[] result = new byte[len]; // ARGB
       Buffer.BlockCopy(p, 0, result, 0, len);
       return result;
    }
    Pour la réception :
    J'ai un buffer en entrée que je converti en WriteableBitmap avec la fonction FromByteArray.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    WriteableBitmap monImage = new WriteableBitmap(160,160);
    public static void FromByteArray(this WriteableBitmap bmp, byte[] buffer)
    {
       Buffer.BlockCopy(buffer, 0, bmp.Pixels, 0, buffer.Length);
    }
    Ensuite je crait mon ImageBrush
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ImageBrush monBrush = new ImageBrush();
    monBrush.ImageSource = monImage ;
    monRectangle.Fill = monBrush ;
    Je tiens à préciser que les 2 rectangles sont de la même largeur*longueur.
    Une idée ? Merci par avance pour vos réponses.
    Images attachées Images attachées  

  2. #2
    Membre Expert
    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
    Par défaut
    As-tu essayé de tester ton WriteableBitmap avant qu'il soit envoyé via TCP en le plaçant dans une image par exemple ?

    Si cela fonctionne de prendre la partie de reception silverlight et la tester dans l'émetteur afin de pouvoir localiser le souci (client ou serveur)

  3. #3
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Par défaut
    Bonjour,

    Oui bien entendu j'avais testé côté client 1 la relecture avec encodage, ceci avec succès.
    Mais au final j'ai adopté l'encodage jpeg avant l'envoie TCP. Et j'ai également fais des changements au niveau de mon service de réception du flux côté serveur, j'utilise maintenant les sockets.
    Donc je pense que la trame était corrompue lors du passage au niveau serveur.
    Et tout fonctionne bien, juste des petits soucis au niveau du nombre d'image par secondes supportés par le serveur.
    Mais voilà je suis plutôt content tout fonctionne maintenant.

    Au plaisir.
    Maxime

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

Discussions similaires

  1. Erreur connect() lors de la 2eme connection TCP
    Par innosang dans le forum Développement
    Réponses: 2
    Dernier message: 15/01/2007, 17h38
  2. Erreur connect() lors de la 2eme connection TCP
    Par innosang dans le forum Réseau
    Réponses: 1
    Dernier message: 29/12/2006, 20h49
  3. Réponses: 1
    Dernier message: 13/12/2006, 00h40
  4. [Image] scintillement lors déplacement sur autre composant
    Par lilou77 dans le forum Interfaces Graphiques en Java
    Réponses: 21
    Dernier message: 07/12/2005, 09h27
  5. Les images clignotes lors du Mouse over
    Par The Bat ! dans le forum C++Builder
    Réponses: 4
    Dernier message: 30/05/2005, 10h37

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