Problème taille d'icon affiché.

Résolu
Signaler
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007
-
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007
-
Bonjour,

    Mon problème est simple, dans une picturebox j'ai une image et je charge un icon dans cette dernière de la facon suivant :

       imageIcon.Picture = LoadResPicture(101, vbResIcon)

    Logiquement ca devrais marché correctement, cependant mon Icon affiché est totalement déformé, que je mette le strech en true ou en false. En strech = false, j'ai l'impression que l'icon fais 3 ou 4 fois sa taille, et en true celui ci est complement écrasé alors que la taille de mon Imagfe semble bonne.

    ?imageIcon.width
    375
    ?imageIcon.height
    375

    J'ai fais la convertion en pixel (avec twipsbypixel) et j'obtien 25, et mon icon fais bien 25x25 (16 couleurs).

    J'ai donc regardé la taille de celui ci après chargement de mon res dans un IPictureDisp (avec width et height) et j'obtien :

    ?tmpImage.width
    847
    ?tmpImage.height

    847

Quelqu'un aurais t'il une idée du pourquoi du comment de cette déformation ? et surtout de comment résoudre le problème d'une manière propre ?

note: j'ai vraiment besoin que mon icon ce trouve dans mon exe, et que la transparence s'applique.

7 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Et pourquoi n'utiliserais-tu pas une image bitmap avec couleur uniforme pour la transparence : tu pourais facilement appliquer la transparence avec l'API TransparentBlt.

Perso, j'ai eu pas mal de petits problèmes avec les icônes dans le fichier ressource, mais jamais un problème de taille d'icône !
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

Salut,

Ok je vais essayé, c'est vrai que par contre aucun problème de dimensionnement avec les image bitmap du fichier ressource, merci. Me reste plus qu'a comprendre l'utilisation de TransparentBlt.
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Elle est vraiment pas compliqué, elle marche un peu sur le principe de la fonction PaintPicture du PictureBox.

Tu peux aller voir ma source qui lui est consacré si tu veux : elle te montrera comment s'en servir, et comment pallier au problème de compatibilité avec Windows 95 en utilisant ma classe de gestion d'images.
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

Erm j'ai un peu de mal a l'utilisé la :

J'ai créer une procédure :

Public Function IMG_DrawTransparentBitmap(ByRef oPicture As PictureBox, ByRef oBitmap As IPictureDisp) As Long
    IMG_DrawTransparentBitmap = TransparentBlt(oPicture.hDC, 0, 0, GetPixelX(oPicture.Width), GetPixelY(oPicture.Height), oBitmap.Handle, 0, 0, GetPixelX(oBitmap.Width), GetPixelY(oBitmap.Height), RGB(4, 132, 132))
    oPicture.Refresh
End Function

et je l'utilise comme ceci :

Debug.print IMG_DrawTransparentBitmap(picImgReduce, LoadResPicture(101, vbResBitmap))

Retour de IMG_DrawTransparentBitmap => 0

et je n'ai rien qui s'affiche... As tu une idée ?

pas réessayer de mettre l'image (cette fois ci dans la picturebox) sans utilisé la fonction je vais essayé tout de suite.
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

Sans la fonction ca passe ... bonne taille ... mais biensur pas la transparence ...
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

Simple question c'est compatible XP ? j'ai vu 98/2000 sur un site
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

Ca marche si je passe par une autre PictureBox pour le loadResPicture et que ensuite je me sert de cette picturebox pour faire la copie de l'image sans la transparence ... mais pas moyen en partant de l'image