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

Langage Delphi Discussion :

méthode floodfill couleurs système ignorées


Sujet :

Langage Delphi

  1. #1
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut méthode floodfill couleurs système ignorées
    Bonjour à tou(te)s

    Le code suivant ne fait rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cadran.Canvas.FloodFill(x,y,clbtnface,fssurface);
    En revanche, si je remplace clbtnface comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cadran.Canvas.FloodFill(x,y,clblue,fssurface);
    ça marche!

    Je précise que dans les 2 cas, la région de cadran autour du point x,y est bien de la couleur indiquée, clbtnface ou clblue selon le cas...

    En fait, on dirait que les couleurs système (clbtnface...) ne sont pas reconnues par la méthode floodfill

    qqn aurait-il déjà rencontré le pb ???

  2. #2
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut Couleur
    Salut

    Les couleurs clBlue, clRed etc... sont des constantes prédéfinies.
    Par contre, clbtnface est une variable qui dépend de la configuration de
    l'interface de WINDOWS.

    Rien à voir (à mon avis) avec la méthode FloodFill. C'est un point
    interressant. Je n'ai pas la réponse mais cela devrait te mêtre sur la voie.

    Si tu trouve l'explication, merci de nous en faire part.

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 903
    Points : 11 475
    Points
    11 475
    Billets dans le blog
    6
    Par défaut
    la couleur clBtnFace (unité Graphics) est définie comme :
    clBtnFace = TColor(COLOR_BTNFACE or $80000000);
    chargée en fonction de l'environnement par appel à la fonction :
    function GetSysColor(nIndex: Integer): DWORD; en passant l'index COLOR_BTNFACE (unité Windows)
    il doit y avoir quelque part dans les initialisations une ligne qui fait :
    COLOR_BTNFACE:=GetSysColor(COLOR_BTNFACE);

  4. #4
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut Bien venu dans les méandres de WINDOWS
    Cela confirme ce que je te disait précédemment.

    clBtnFace est une variable prédéfinie selon le standard WINDOWS.

    Essais de faire tout simplement ceci :




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Var
       Couleur : TColor;
     
    begin
        Couleur := clBtnFace;
     
        cadran.Canvas.FloodFill(x,y,couleur,fssurface);
     
    end;
    Quel système d'exploitation utilises tu ?
    98, 2000, Xp...

    A+

  5. #5
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    OK tourlourou
    Ce code fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      cadran.Canvas.FloodFill(x,y,GetSysColor(COLOR_BTNFACE),fssurface);
    Malheureusement, l'aide de mon D6 ne connaît pas la méthode getsyscolor, j'aurais aimé en savoir plus...

    tant pis

    Philippe Gormand, j'avais essayé ta soluce de passer par une variable TColor mais ça ne donne rien (win xp)

    Merci à tous 2

    bonne fin de WE

  6. #6
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut GeetSysColor
    Voici le texte d'aide de la fonction GetSysColor de l'API WINDOWS.

    The GetSysColor function retrieves the current color of the specified display element. Display elements are the parts of a window and the Windows display that appear on the system display screen.

    DWORD GetSysColor(

    int nIndex // display element
    );


    Parameters

    nIndex

    Specifies the display element whose color is to be retrieved. This parameter must be one of the following values:

    Value Meaning
    COLOR_3DDKSHADOW Dark shadow for three-dimensional display elements.
    COLOR_3DFACE,
    COLOR_BTNFACE Face color for three-dimensional display elements.
    COLOR_3DHILIGHT, COLOR_3DHIGHLIGHT, COLOR_BTNHILIGHT, COLOR_BTNHIGHLIGHT Highlight color for three-dimensional display elements (for edges facing the light source.)
    COLOR_3DLIGHT Light color for three-dimensional display elements (for edges facing the light source.)
    COLOR_3DSHADOW, COLOR_BTNSHADOW Shadow color for three-dimensional display elements (for edges facing away from the light source).
    COLOR_ACTIVEBORDER Active window border.
    COLOR_ACTIVECAPTION Active window caption.
    COLOR_APPWORKSPACE Background color of multiple document interface (MDI) applications.
    COLOR_BACKGROUND, COLOR_DESKTOP Desktop.
    COLOR_BTNTEXT Text on push buttons.
    COLOR_CAPTIONTEXT Text in caption, size box, and scroll bar arrow box.
    COLOR_GRAYTEXT Grayed (disabled) text. This color is set to 0 if the current display driver does not support a solid gray color.
    COLOR_HIGHLIGHT Item(s) selected in a control.
    COLOR_HIGHLIGHTTEXT Text of item(s) selected in a control.
    COLOR_INACTIVEBORDER Inactive window border.
    COLOR_INACTIVECAPTION Inactive window caption.
    COLOR_INACTIVECAPTIONTEXT Color of text in an inactive caption.
    COLOR_INFOBK Background color for tooltip controls.
    COLOR_INFOTEXT Text color for tooltip controls.
    COLOR_MENU Menu background.
    COLOR_MENUTEXT Text in menus.
    COLOR_SCROLLBAR Scroll bar gray area.
    COLOR_WINDOW Window background.
    COLOR_WINDOWFRAME Window frame.
    COLOR_WINDOWTEXT Text in windows.


    Return Values

    If the function succeeds, the return value is the red, green, blue (RGB) color value that specifies the color of the given element.

    Remarks

    System colors for monochrome displays are usually interpreted as shades of gray.

    See Also

    SetSysColors

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

Discussions similaires

  1. Réponses: 28
    Dernier message: 29/12/2011, 20h24
  2. Appliquer une couleur système à une cellule
    Par zappy bibicy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/08/2006, 18h34
  3. Réponses: 2
    Dernier message: 21/04/2006, 10h01
  4. Comment modifier les couleurs système ?
    Par yousserr dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 24/07/2005, 11h57
  5. Réponses: 2
    Dernier message: 26/10/2004, 18h42

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