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

API, COM et SDKs Delphi Discussion :

MaskBlt, comment ça marche ?


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre éclairé Avatar de Laskar
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2002
    Messages : 230
    Par défaut [Resolu] MaskBlt, comment ça marche ?
    bonjour,

    Je cherche en vain de la doc sur cette fonction GDI.
    Je trouve cette syntaxe dans l'aide de CodeGear:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    BOOL MaskBlt(
      HDC hdcDest,     // handle to destination DC
      int nXDest,      // x-coord of destination upper-left corner
      int nYDest,      // y-coord of destination upper-left corner 
      int nWidth,      // width of source and destination
      int nHeight,     // height of source and destination
      HDC hdcSrc,      // handle to source DC
      int nXSrc,       // x-coord of upper-left corner of source
      int nYSrc,       // y-coord of upper-left corner of source
      HBITMAP hbmMask, // handle to monochrome bit mask
      int xMask,       // horizontal offset into mask bitmap
      int yMask,       // vertical offset into mask bitmap
      DWORD dwRop      // raster operation code
    Ce qui reste un mystère complet pour moi, c'est ce dernier paramètre 'dwrop'.
    Il s'agit d'une combinaison entre les pixels source et destination qu'on peut indiquer sous la forme d'une macro : MakeRop4(Dest, source).
    Quelqu'un aurait-il un EXEMPLE précis utilisant cette fonction (en Delphi si possible) qui permettrait d'afficher un sprite associé à un masque ? Le but étant, évidement, d'avoir des zones transparentes.

    Merci

  2. #2
    Membre éclairé Avatar de Laskar
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2002
    Messages : 230
    Par défaut
    Bon, je me réponds à moi-même personnellement tout seul ...

    Avec cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaskBlt(img_Fond.Canvas.Handle, 10, 10, Largeur, Hauteur, bm_Sprite.Canvas.Handle, 0,0, bm_Mask.Handle, 0, 0, MakeRop4(SrcCopy, $00AA0029));
    ... ça marche nickel.
    Il est important que le masque soit noir avec les zones transparentes en blanc. Il faut impérativement que la bitmap du masque soit au format 1 bit/pixel.
    La valeur magique '$00AA0029', je l'ai trouvée ... par hasard !!

    See you.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ToAsciiEx, comment cela marche ?
    Par mikyfpc dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/02/2004, 21h39
  2. [MFC] list box : comment ça marche
    Par runn2 dans le forum MFC
    Réponses: 4
    Dernier message: 28/01/2004, 12h36
  3. [SYNEDIT] -> Comment ça marche ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2004, 19h11
  4. [TP][Turbo Vision] comment ça marche ??
    Par Costello dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 05/08/2003, 00h24
  5. [update][req. imbriquee] Comment ca marche ??
    Par terziann dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/07/2003, 12h51

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