1 pièce(s) jointe(s)
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)
http://www.imagup.com/data/1130136171.html
Pour la préparation de l'envoi j'utilise :
Code:
1 2
|
WriteableBitmap monImage = new WriteableBitmap(rectangleEnvoi, null); |
Et j'utilise également la fonction ToByteArray pour la convertir avant l'envoi.
Code:
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:
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:
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.