Le problème consiste à inverser les couleurs d'un élément Silverlight Image.Silverlight Image: comment inverser ou annuler les couleurs de l'image?
Il existe une image avec un fichier JPG en tant que source. Cliquez sur un bouton pour inverser les couleurs. Cela semble simple, pas vrai. Prenez chaque pixel, puis modifiez sa valeur par une valeur de 255 pixels. Mais quand j'ai essayé WritableBitmap chargé avec la source d'image, j'ai obtenu l'exception de sécurité interdisant l'accès au pixel. Voici mon code:
if (MainLeftImage.Source != null)
{
WriteableBitmap bitmap = new WriteableBitmap((BitmapSource)MainLeftImage.Source);
byte[] pixels = new byte[bitmap.Pixels.Length];
int size = pixels.Count();
for (int i = 0; i < size; i++)
pixels[i] = (byte)(255 - pixels[i]);
bitmap.Invalidate();//redraw and then plug it back on
MainLeftImage.Source = bitmap;
}
}
catch (Exception ex)
{
}
Attend que WritableBitmap est pas une solution, non? Toute aide appréciée. Merci les gars.
Je vois, merci Keith. J'ai eu le problème avec l'accès interdomaines, ce qui est mon cas. Je vais essayer le shader d'abord. À votre santé. – val
Salut Keith, j'ai essayé les pix shaders et ils ont l'air bien pour les effets, mais ils ne modifient pas Image.Source dont j'ai besoin aussi. En ce qui concerne mon exception d'accès de sécurité: quelle est la place pour le fichier xml de la politique interdomaines exactement? Devrait-il être dans la racine de mon répertoire virtuel d'image sur le serveur? ou avec l'application web SL? Merci. – val
Le fichier clientaccesspolicy doit aller à la racine du serveur à partir duquel l'image est exposée. Donc, si l'URL de l'image est http://myserver.com/images/myphoto.jpg, l'url du fichier clientaccesspolicy doit être http://myserver.com/clientaccesspolicy.xml. Plus d'informations [ici] (http://msdn.microsoft.com/en-us/library/cc645032%28v=VS.95%29.aspx). – KeithMahoney