Couleur de trensparence en VCPP

AZEazeazgfafaazea Messages postés 58 Date d'inscription jeudi 30 décembre 2004 Statut Membre Dernière intervention 21 septembre 2007 - 1 avril 2007 à 13:11
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 2 avril 2007 à 15:17
Voila je voudrais faire une forme non standart , et j'ai fais un fond en fushia , et ca me donne ca :

 Je pense que c'est a cause du flou !
QQn peut-il m'aider ??
Merci d'avance.
Hrusdik
I do what I want, where I want, when I want<

4 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
1 avril 2007 à 20:23
Heu, désolé, mais c'est quoi la question ?
0
AZEazeazgfafaazea Messages postés 58 Date d'inscription jeudi 30 décembre 2004 Statut Membre Dernière intervention 21 septembre 2007
1 avril 2007 à 22:21
:D Désolé jétais tellement enervé que je me suis pas bien expliqué , en faite je voudrais faire une form qui ne soit pas carrée , mais mon probleme c'est la transparence , j'ai deffini en couleur de trensparence le Fushia , mais le flou change le code RGB, alors on m'a conseillé d'utiliser des images PNG, qui ont un niveau alpha, mais la aussi je n'arrive pas a faire quelque chose de correct , car la form n'accepte pas backcolor="Transaprent" !
J'ai esseayé de mettre Backcolor= Fushia et mettre mon image d'arrier plan par dessus avec une picture box( en PNG ), mais la le probleme avec le flou reviens et on vois la couleur dérivée du fushia !

Voila et encore une fois désolé :D

Hrusdik
I do what I want, where I want, when I want<
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
2 avril 2007 à 14:52
Salut,
Je pense que le meilleur moyen de faire ce genre de choses est d'utiliser les regions. On peut créer une région à partir d'un bitmap. On choisit une couleur pour la transparence. Cette région sera appliquée à la fenêtre. Voici un code qui pourrait t'être utile:
http://www.cppfrance.com/codes/REGION-PARTIR-BITMAP_10721.aspx
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
2 avril 2007 à 15:17
Il faut simplement dessiner avec un logiciel de dessin le MAGENTA sans flou, c'est facile.
Ensuite utiliser WS_EX_LAYERED pour ta form.

HWND hWnd = CreateWindowEx(WS_EX_LAYERED, szAppName, szAppName,
          WS_POPUP | WS_VISIBLE | WS_CLIPSIBLINGS,
          CW_USEDEFAULT, CW_USEDEFAULT, SizeBmp .cx, SizeBmp.cy,
          0, 0, hInstance, 0);

Puis utiliser wm_create :

case WM_CREATE:
   hBmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BMP));
   SetLayeredWindowAttributes(hWnd, RGB(255, 0, 255), 0, LWA_COLORKEY);
   // Ajouter | LWA_ALPHA pour la transluance (0 -> 255)
   return 0;

Puis utiliser le message eraseBackground  :

case WM_ERASEBKGND: {
   HDC hDC, hMemDC;
   HBITMAP hOldBmp;
   hDC = (HDC)wParam;
   if(hBmp) {
    hMemDC = CreateCompatibleDC(hDC);
    hOldBmp = (HBITMAP)SelectObject(hMemDC, hBmp);
    BitBlt(hDC, 0, 0, SizeBmp.cx, SizeBmp.cy, hMemDC, 0, 0, SRCCOPY);
    SelectObject(hMemDC, hOldBmp);
    DeleteDC(hMemDC);
   }
0
Rejoignez-nous