Icone dégueulasse !

cs_Kephren Messages postés 54 Date d'inscription dimanche 25 novembre 2001 Statut Membre Dernière intervention 19 mai 2003 - 15 mai 2003 à 19:23
ordiman85 Messages postés 41 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 19 mars 2010 - 12 avril 2007 à 21:10
Salut, je viens demander de l'aide.
J'ai fait une toolbar dans mon prog, via les API sans MFC. Et je vais ensuite mettre les icones des boutons dedans. Des icones que j'ai moi même choisie judicieusement par leur beauté :big)
Le probleme c'est que lorsqu'ils sont affichés dans la toolbar, il y a des effets de transparence ratée.
C'est dur à expliquer c'est pourquoi je donne un lien sur l'image pour que vous compreniez :

Comme vous le voyez, sur la gauche, vous avez les icones de mon programme et sur la droite, les aperçu tel que les a donnée l'explorateur. Il y a bien une différence entre les deux au niveau de la transparence (il reste des vieux pixels éparpillés).
Si vous savez à quoi c'est due, n'hésiter pas à répondre.
Merci @+++

4 réponses

Krox68 Messages postés 157 Date d'inscription jeudi 17 octobre 2002 Statut Membre Dernière intervention 11 septembre 2004 1
16 mai 2003 à 11:12
bof moi je trouve kil son pa mal tes icones
c sur si tu di ke ya un prb avec la transparence on va dire oui c vrai mai si on sai pa on sen ren pa vraiment compte...
Krox >:)
0
Galett Messages postés 115 Date d'inscription jeudi 7 février 2002 Statut Membre Dernière intervention 21 mai 2005
16 mai 2003 à 13:54
et bien, il me semble que c'est du à l'anti-aliasing qu'effectue XP, si tu veux obtenir le même résultat, il faudrait que fasse de l'anti-aliasing des icones, c'est un peu sortir le porte avion pour tuer une mouche là :o)
sinon tu peux p'tet essayer en effectuant une capture d'écran des icones sous XP et les enregistrer, puis les réafficher dans ton prog :-/

manger des galettes et des crêpes
[mailto:galett@voila.fr mailto:galett@voila.fr]
0
cs_Kephren Messages postés 54 Date d'inscription dimanche 25 novembre 2001 Statut Membre Dernière intervention 19 mai 2003
16 mai 2003 à 16:42
Ouais oki merci pour vos réponses c'est sympa de voir qu'il y a du monde ici :p
Je regarde cette histoire de anti-aliasing. Au fait, avant les icones étaient en 16, je sais plus combien de couleurs et je les ai mises en 256 pour les faire marcher. Ca serait pas du à ça ?
0
ordiman85 Messages postés 41 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 19 mars 2010
12 avril 2007 à 21:10
J'ai eu le même problème, voici ma solution :

Après la récéption d'un message WM_CREATE ou WM_INITDIALOG tu dois mettre un code du style :

_____________________________________ (fichier ressource)

IDB_TOOLBAR BITMAP DISCARDABLE "rc/toolbar.bmp"

______________________________________ (code c/c++)

    HWND hwnd;
    TBBUTTON tbb[3];

    hwnd = GetDlgItem(hDlg, IDTB_MAINTOOLBAR);

    tbb[0].iBitmap = 0;
    tbb[0].idCommand = IDM_BUTTON1;
    tbb[0].fsState = TBSTATE_ENABLED;
    tbb[0].fsStyle = TBSTYLE_BUTTON;
    tbb[0].dwData = 0;
    tbb[0].iString = SendMessage(hwnd, TB_ADDSTRING, 0, (LPARAM)"Bouton 1");

    // Séparation
    tbb[1].iBitmap = 0;
    tbb[1].idCommand = -1;
    tbb[1].fsState = 0;
    tbb[1].fsStyle = TBSTYLE_SEP;
    tbb[1].dwData = 0;
    tbb[1].iString = -1;

    tbb[2].iBitmap = 1;
    tbb[2].idCommand = IDM_BUTTON2;
    tbb[2].fsState = TBSTATE_ENABLED;
    tbb[2].fsStyle = TBSTYLE_BUTTON;
    tbb[2].dwData = 0;
    tbb[2].iString = SendMessage(hwnd, TB_ADDSTRING, 0, (LPARAM)"bouton 2");

    SendMessage(hwnd, TB_SETIMAGELIST, 0, (LPARAM)ImageList_LoadImage((HINSTANCE)GetWindowLong(hDlg, GWL_HINSTANCE), (LPCTSTR)IDB_TOOLBAR, 32, 0, CLR_DEFAULT, IMAGE_BITMAP, LR_CREATEDIBSECTION|LR_LOADTRANSPARENT));
    SendMessage(hwnd, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
    SendMessage(hwnd, TB_ADDBUTTONS, 3, (LPARAM)&tbb);
    SendMessage(hwnd, TB_AUTOSIZE, 0, 0);

________________________________________________ (fin code)

Instructions :

hDlg = Handle de la fenêtre.
hwnd = Handle de la toolbar.

TBBUTTON tbb[3];
-> remplace 3 par le nombre de boutons.

SendMessage(hwnd, TB_SETIMAGELIST,....); :
-> remplace 32 par la taille de tes icones.
-> remplace IDB_TOOLBAR par la constante ressource de ton bitmap.

SendMessage(hwnd, TB_ADDBUTTONS, 3, ...);
-> remplace 3 par le nombre de boutons.

Les icônes devraient s'afficher en mode 16 ou 32bits grâce au seul paramètre LR_CREATEDIBSECTION...

@+
0
Rejoignez-nous