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

Windows Discussion :

Dessiner sur le bureau HBITMAP avec transparence


Sujet :

Windows

  1. #1
    Invité
    Invité(e)
    Par défaut Dessiner sur le bureau HBITMAP avec transparence
    Bonjour, j'essais en C++ sous Code::Blocks de dessiner sur le bureau directement un BMP en y rendant transparent certaine partie.

    J'ai trouvé plein de tuto sur le net qui indiquent comment faire lorsqu'on veut dessiner avec de la transparence sur une Form, et ça marche bien, mais pas sur le bureau. La zone qui devrait être transparente est noire, impossible de faire autrement.

    Une idée de pourquoi ? Mon code :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    // Procédure principale
    int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
        // Variable qui détermine si l'utilisateur a appuyé sur Echap
        char Quitter = 0;
    
        // Récupère le Handle du bureau
        HWND hwndDesktop = GetDesktopWindow();
    
        // Récupère la zone de dessin du bureau
        HDC hdcDesktop = GetWindowDC(hwndDesktop);
        // Temp context
        HDC hdcTemp = CreateCompatibleDC(NULL);
    
        HINSTANCE hInstance;
        PAINTSTRUCT ps;
    
        HBITMAP bitmap1 = LoadBitmap(hinstance,MAKEINTRESOURCE(001));
        HBITMAP mask1   = LoadBitmap(hinstance,MAKEINTRESOURCE(101));
    
        // Début de boucle
        do {
            if (GetAsyncKeyState(VK_ESCAPE)){
                Quitter = 1;
            }
                //Dessin du masque 
                SelectObject(hdcTemp, mask1);
                BitBlt(hdcDesktop, 400, 400, 50, 50, hdcTemp, 0, 0, SRCAND);
    
                //Dessin de l'image sur le masque
                SelectObject(hdcTemp, bitmap1);
                BitBlt(hdcDesktop, 400, 400, 50, 50, hdcTemp, 0, 0, SRCPAINT);
    
            Sleep(100);
        } while (Quitter == 0);
    
        // Libère le contexte de périphérique du bureau
        ReleaseDC(hwndDesktop, hdcDesktop);
        // Efface le dessin
        InvalidateRect(0, 0, 0);
        // Quitte le programme
        return 0;
    }
    Merci !

  2. #2
    Membre habitué

    Inscrit en
    Mai 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 132
    Points : 171
    Points
    171

  3. #3
    Invité
    Invité(e)
    Par défaut
    Le 2ème et le 3ème liens ne marchent pas ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/04/2013, 15h27
  2. [Débutant] Dessiner sur le bureau
    Par AzevedoSt27 dans le forum C#
    Réponses: 0
    Dernier message: 08/05/2012, 08h57
  3. Dessiner sur le Bureau Windows et Effacer
    Par guedelmalin dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 15/08/2007, 16h43
  4. Traitements d'image sur PNG avec transparence
    Par Ingham dans le forum Langage
    Réponses: 16
    Dernier message: 02/08/2004, 16h42

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