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 :

GradientFill et paramètres


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Par défaut GradientFill et paramètres
    bonjour
    je cherche à utiliser GradientFill dans une Timage
    avec ce 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
    procedure degrader_new;
    var
     handle_image:hdc;
     gRect : Trect;
     tab_vertex :array[1..2] of _trivertex;
     gr_rectangle:pointer;
     rectangle:gradient_rect;
    begin
            tab_vertex[1].X:=10;
            tab_vertex[1].Y:=0;
            tab_vertex[1].Red:=0;
            tab_vertex[1].Green:=0;
            tab_vertex[1].Blue:=0;
            tab_vertex[1].Alpha:=0;
            tab_vertex[2].X:=0;
            tab_vertex[2].Y:=800;
            tab_vertex[2].Red:=0;
            tab_vertex[2].Green:=100;
            tab_vertex[2].Blue:= 0;
            tab_vertex[2].Alpha:= 0;
            rectangle.UpperLeft := 0;
            rectangle.LowerRight := 1;
            gr_rectangle:= pointer(@rectangle);
            handle_image := Form1.Image1.Canvas.Handle;
            GradientFill(handle_image ,tab_vertex[1], 2 ,gr_rectangle , 1,GRADIENT_FILL_RECT_H);
    end;
    j'obtiens un beau dégradé du noir au marron, ce qui n'est pas ce que je lui demande, de plus, les coordonnées ne correspondent pas.
    Manifestement il y a un problème de prise de paramètres.
    si vous pouvez m'aider à trouver mon erreur.. merci.
    Jean Pierre

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 937
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Ce code ne devrait même pas compiler . GradientFill attend un pointer sur un array de TTriVertex.

    Ensuite les positions comme écrites dessine un rectangle de 0/0, 10/800 avec un remplissage de droite à gauche. (Le 2ème vertex est plus à gauche que le 1er)

    Enfin les composantes sont sur 16 bits (Color16). Passer 100 à Green ne fera pas une grande différence de couleur.

    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
    procedure degrader_new;
    var
     handle_image :hdc;
     tab_vertex   :array[1..2] of TTriVertex;
     rectangle    :TGradientRect;
    begin
      tab_vertex[1].X:=10;           //Offset X = 10
      tab_vertex[1].Y:=10;           //Offset Y = 10
      tab_vertex[1].Red:=0;
      tab_vertex[1].Green:=0;
      tab_vertex[1].Blue:=0;
      tab_vertex[1].Alpha:=0;
     
      tab_vertex[2].X:=20;           //Largeur = 10
      tab_vertex[2].Y:=100;          //Hauteur = 90
      tab_vertex[2].Red:=0;
      tab_vertex[2].Green:=25500;    //Vert foncé
      tab_vertex[2].Blue:= 0;
      tab_vertex[2].Alpha:= 0;
     
      rectangle.UpperLeft := 0;
      rectangle.LowerRight := 1;
     
      handle_image := Form1.Image1.Canvas.Handle;
     
      //Dégradé gauche-droite (noir à vert foncé)
      GradientFill(handle_image, @tab_vertex, 2, @rectangle, 1, GRADIENT_FILL_RECT_H);
    end;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Par défaut
    merci pour ces éclaircissements ((c'est la première fois que je touche à ce genre de choses)
    il y avait un autre problème du à une erreur de windows.pas (trouve sur un site anglais) il faut donc redéfinir la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function GradientFill(DC : hDC; pVertex : Pointer; dwNumVertex : DWORD;
      pMesh : Pointer; dwNumMesh, dwMode: DWORD) : DWord; stdcall;
      external 'msimg32.dll';
    comme ça, c'est bon.
    Jean Pierre

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

Discussions similaires

  1. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11
  2. [xmlrad] Pb de paramètre ?
    Par Pm dans le forum XMLRAD
    Réponses: 7
    Dernier message: 07/01/2003, 14h37
  3. [SWT] Problème de paramètre GridData
    Par yolepro dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 06/12/2002, 10h37
  4. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47
  5. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24

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