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

Langages Discussion :

Afficher une icone haute résolution dans une application C#


Sujet :

Langages

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 20
    Points : 21
    Points
    21
    Par défaut Afficher une icone haute résolution dans une application C#
    Bonjour.
    Je cherche à afficher des icônes associés aux fichiers déporté sur mon application par "drag and drop", mais par la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExtractAssociatedIcon(file);
    , je ne peux récupérer qu'une image 32x32px. Or cela m'est insuffisant.
    J'ai bien trouvé un sujet https://www.developpez.net/forums/d8...one-d-fichier/ qui propose la méthode de https://lluisfranco.com/2014/04/16/e...network-paths/, mais c'est en VB.NET, et je n'arrive pas à faire la conversion.

    Je vous propose tout de même cette solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    private static IntPtr GetIconHandleFromFilePath(
        string filepath, IconSizeEnum iconsize)
    {
        var shinfo = new Shell.SHFILEINFO();
        const uint SHGFI_SYSICONINDEX = 0x4000;
        const int FILE_ATTRIBUTE_NORMAL = 0x80;
        const int ILD_TRANSPARENT = 1;
        uint flags = SHGFI_SYSICONINDEX;
        var retval = SHGetFileInfo(filepath, FILE_ATTRIBUTE_NORMAL,
            ref shinfo, Marshal.SizeOf(shinfo), flags);
        if (retval == 0) throw (new System.IO.FileNotFoundException());
        var iconIndex = shinfo.iIcon;
        var iImageListGuid = newGuid("46EB5926-582E-4017-9FDF-E8998DAA0950");
        Shell.IImageList iml;
        var hres = SHGetImageList((int)iconsize, ref iImageListGuid, out iml);
        var hIcon = IntPtr.Zero;
        hres = iml.GetIcon(iconIndex, ILD_TRANSPARENT, ref hIcon);
        return hIcon;
    }
    Merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Regardes dans un de mes derniers projet l'implémentation ICI

    Puis pour convertir en C# :
    http://converter.telerik.com

    ++

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 20
    Points : 21
    Points
    21
    Par défaut
    Merci pour votre réponse, cependant, j'aurais besoin d'une icone plus grande (64 ou 128 px) et votre implémentation ne gère que 16 ou 32px
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Enum IconSize
            ''' <summary>
            ''' Specify large icon - 32 pixels by 32 pixels.
            ''' </summary>
            Large = 0
            ''' <summary>
            ''' Specify small icon - 16 pixels by 16 pixels.
            ''' </summary>
            Small = 1
        End Enum
    Je ne maîtrise pas le VB.NET, pourriez vous m’indiquer que modifier pour obtenir des icônes plus grandes ?
    Merci

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  2. Réponses: 5
    Dernier message: 10/01/2008, 08h47
  3. Afficher des bitmaps à haute vitesse dans une application fenêtrée
    Par acanicio dans le forum Développement 2D, 3D et Jeux
    Réponses: 9
    Dernier message: 27/10/2006, 22h35
  4. Afficher des bitmaps à haute vitesse dans une application
    Par acanicio dans le forum API graphiques
    Réponses: 1
    Dernier message: 27/10/2006, 10h03
  5. Réponses: 3
    Dernier message: 06/09/2006, 09h06

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