vendredi 28 février 2014

Afficher la couleur du code couvert par les tests unitaires(Code Coverage Color)


Aujourd'hui, j'ai eu un problème,c'est que je ne pouvais pas obtenir la couleur de la couverture de code. Il ne fonctionne plus même lorsque vous appuyez sur le bouton "Show code coverage coloring".

J'utilise VS2012. Ultimate qui a été mis à niveau de VS2012.2 professionnel.

Pour résoudre le problème, j'ai dû réinitialiser VS avec la commande suivante:

"devenv / resetuserdata"

Problème a été signalé dans la page suivante:
http://social.msdn.microsoft.com/Forums/en-US/0e4b63e3-9788-4371-bfdd-0996cb8fadaa/code-coverage-color-is-not-seen?forum=vststest

lundi 27 septembre 2010

Scanner une image a partir de Silverlight en utilisant WIA(Windows Image Acquisition)

parmi les nouvelles fonctionnalités de silverlight 4  c'est "trusted applications"  de pouvoir exécuter une application web a l’extérieur du navigateur  et  d'accéder aux ressources materiels et logiciels de la machine de l'utilisateur en local.

Configuration                                                                                                          

Avant de commencer assuré vous que vous disposer de visual studio2010 et la dernier version du SDK de silverlight installer sur votre machine.

créer une nouvelle application silverlight et laisser coché "Héberger l'application Silverlight sur un nouveau site web".

changer les propriétés du projet silverlight pour qu'il puisse être exécuté hors navigateur.

ensuite clicker sur parametres hors navigateur... et cocher


finalement et puisque nous allons utilisé le mot clé dynamic ,vous devez référencé la bibliothèque CSharp.dll disponible dans  le SDK de silverlight4


mise en oeuvre                                                                                                        

dans cette partie nous allons créé une classe nommé ScannerService qui s’en chargera de scanner les images.
concernant les informations fourni par WIA ,je pense qu'il sera très intéressant de créer des énumérations a la place de travailler avec des valeurs numériques.


class ScannerService
{
    // http://msdn.microsoft.com/en-us/library/ms630792(v=VS.85).aspx
    private enum WiaDeviceType
    {
        UnspecifiedDeviceType = 0,
        ScannerDeviceType = 1,
        CameraDeviceType = 2,
        VideoDeviceType = 3
    }

    // http://msdn.microsoft.com/en-us/library/ms630798(v=VS.85).aspx
    private enum WiaImageIntent
    {
        UnspecifiedIntent = 0,
        ColorIntent = 1,
        GrayscaleIntent = 2,
        TextIntent = 4
    }

    // http://msdn.microsoft.com/en-us/library/ms630796(v=VS.85).aspx
    private enum WiaImageBias
    {
        MinimizeSize = 65536,
        MaximizeQuality = 131072
    }

    // http://msdn.microsoft.com/en-us/library/ms630810(v=VS.85).aspx
private class FormatID
    {
     public const string wiaFormatBMP = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}";
     public const string wiaFormatPNG = "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}";
     public const string wiaFormatGIF = "{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}";
     public const string wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}";
     public const string wiaFormatTIFF = "{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}";
    }


// les autres méthodes

}



pour pouvoir scanner une image on devra utiliser  WIA.CommonDialog et de spécifier un ensemble de paramètres :


public BitmapSource Scan(String Chemin)
        {
            try
            {    //création d'un objet WIA.CommonDialog
                dynamic wiaDialog = AutomationFactory.CreateObject("WIA.CommonDialog");
                //afficher la boite de dialog qui permet de scanner une image
                dynamic imageFile = wiaDialog.ShowAcquireImage(
                        (int)WiaDeviceType.ScannerDeviceType,
                        (int)WiaImageIntent.TextIntent,
                        (int)WiaImageBias.MaximizeQuality,
                        FormatID.wiaFormatJPEG, true, true, false);
              
                  //forcer le type d'image ,s'il n'est pas jpeg on la convertie
                if (imageFile.FormatID != FormatID.wiaFormatJPEG)
                {
                    dynamic IP = AutomationFactory.CreateObject("Wia.ImageProcess");
                    IP.Filters.Add(IP.FilterInfos("Convert").FilterID);
                    IP.Filters(1).Properties("FormatID").Value = FormatID.wiaFormatJPEG;
                    imageFile = IP.Apply(imageFile);
                }


            //// sauvegarder l'image
            imageFile.SaveFile(chemin);
            }
            catch (COMException  ex)
            {

                if (ex.ErrorCode == -2145320939)
                    {
                        MessageBox.Show("!Scanner");
                    }
              
            }
          
        }

Si on veut manipuler l'image sans la sauvegarder sur disque :il suffit d'ajouter cette fonction et de la mettre a la place de imageFile.SaveFile(chemin);:


   
private BitmapSource ImageFileToBitmap(dynamic imageFile)
        {
            if (imageFile == null)
                return null;
            BitmapImage bitmapBase = new BitmapImage();
            dynamic fileData = imageFile.FileData;
            _imageData = fileData.BinaryData;
            MemoryStream ms = new MemoryStream(_imageData);
            bitmapBase.SetSource(ms);
            WriteableBitmap writeableBitmap = new WriteableBitmap(bitmapBase);
            return writeableBitmap;
        }