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

Flash Pascal Discussion :

Utilisation de GetPixel


Sujet :

Flash Pascal

  1. #1
    Membre expérimenté
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 410
    Points : 1 575
    Points
    1 575
    Par défaut Utilisation de GetPixel
    Pour faire plaisir à Roland... :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    program getpixel;
     
    uses Flash8;
     
     {$FRAME_WIDTH 510}
     {$FRAME_HEIGHT 350}
     {$JPEG  nom 'voeux2012.jpg'}
     
     const frame_width=510;
           frame_height=350;
    type
      image = class(Movieclip)
        mybmp : BitmapData;
        Field:TextField;
        Font:TextFormat;
        constructor Create;
        Procedure domousemove;
      end;
     
     
    Function GetBvalue(coul:integer):integer;
    begin
     result :=coul Mod 256;
    end;
     
    Function GetGvalue(coul:integer):integer;
    begin
     result :=floor((Coul Mod 65536)/256);
    end;
     
    Function GetRvalue(coul:integer):integer;
    begin
     result :=Floor(Coul/65536);
    end;
     
    constructor Image.Create;
    begin
     inherited Create(nil,'mymovieclip',1);
     mybmp := BitmapData.Create(frame_width,frame_height);
     mybmp := loadBitmap('nom');
     attachBitmap(mybmp,1,'',false);
     Font:=TextFormat.Create( 'Arial',16,$000000,True,False,False,'center');
     onmousemove:=domousemove;
    end;
     
    Procedure Image.domousemove;
    var R,V,B:integer;
        rgb:number;
    begin
     clear;
     Field.text:='';
     mybmp.draw(self);
     rgb:=mybmp.GetPixel(_xmouse,_ymouse);
     R:=GetRValue(floor(rgb));
     V:=GetGValue(floor(rgb));
     B:=GetBValue(floor(rgb));
     field:=TextField.Create(self,'codeRGB',2,_xmouse-60,_ymouse-40,200,40);
     with field do
     begin
      setNewTextFormat(Font);
      text:='( '+inttostr(R)+' , '+inttostr(V)+' , '+inttostr(B)+' )';
     end;
    end;
     
    begin
     Image.Create;
    end.
    tu vas pouvoir de faire plaisir en complétant avec le code hexadécimal

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    décembre 2011
    Messages
    3 508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 508
    Points : 12 246
    Points
    12 246
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Archimède Voir le message
    Pour faire plaisir à Roland...
    Très joli exemple !

  3. #3
    Membre expérimenté
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 410
    Points : 1 575
    Points
    1 575
    Par défaut
    merci, toi qui te passionnes pour les changements de base...
    Je te laisse le plaisir de compléter l'affichage en hexadécimal si tu veux.

  4. #4
    Membre expérimenté
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 410
    Points : 1 575
    Points
    1 575
    Par défaut
    Au fait le draw ne sert à rien ...
    il est à retirer.

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    7 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 7 416
    Points : 24 305
    Points
    24 305
    Par défaut
    Bonjour,

    voici une version modifiée avec quelques explications...si je puis me permettre

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    program getpixel;
     
    uses Flash8;
     
     {$FRAME_WIDTH 510}
     {$FRAME_HEIGHT 350}
     {$JPEG  nom 'voeux2012.jpg'}
     
     const frame_width=510;
           frame_height=350;
    type
      image = class(Movieclip)
        mybmp : BitmapData;
        Field:TextField;
        Font:TextFormat;
        constructor Create;
    // au lieu d'affecter la propriété onMouseMove on défini directement la méthode 
        Procedure onMouseMove;
      end;
     
     
    Function GetBvalue(coul:integer):integer;
    begin
     result :=coul Mod 256;
    end;
     
    Function GetGvalue(coul:integer):integer;
    begin
     result :=floor((Coul Mod 65536)/256);
    end;
     
    Function GetRvalue(coul:integer):integer;
    begin
     result :=Floor(Coul/65536);
    end;
     
    constructor Image.Create;
    begin
     inherited Create(nil,'mymovieclip',1);
    // loadBitmap crée l'image, pas la peine de le faire
    // mybmp := BitmapData.Create(frame_width,frame_height);
     mybmp := loadBitmap('nom');
     attachBitmap(mybmp,1,'',false);
     Font:=TextFormat.Create( 'Arial',16,$000000,True,False,False,'center');
     //onmousemove:=domousemove;
    // autant le créer une fois pour toute
     field:=TextField.Create(self,'codeRGB',2,0,0,200,40);
     field.setNewTextFormat(Font);
    end;
     
    Procedure Image.onMouseMove;
    var R,V,B:integer;
        rgb:number;
    begin
    // pourquoi tout effacer et tout redessiner ?!
     //clear;
     //Field.text:='';
     //mybmp.draw(self);
     rgb:=mybmp.GetPixel(_xmouse,_ymouse);
     R:=GetRValue(floor(rgb));
     V:=GetGValue(floor(rgb));
     B:=GetBValue(floor(rgb));
     
    // il a été créé une fois pour toute, pas la peine de recommencer à chaque fois
     //field:=TextField.Create(self,'codeRGB',2,_xmouse-60,_ymouse-40,200,40);
     
     // attention, il faut modifier Flash8.pas, _x et _y sont des Number et non des Integer
    // ou utiliser Round()
     field._x := Round(_xmouse - 60);
     field._y := Round(_ymouse - 60);
     with field do
     begin
      { ne fonctionne pas ! même bug que pour l'horloge avec Self dans With
      _x := self._xmouse - 60;
      _y := self._ymouse - 40;
      }
      //setNewTextFormat(Font);
      text:='( '+inttostr(R)+' , '+inttostr(V)+' , '+inttostr(B)+' )';
     end;
    end;
     
    begin
     Image.Create;
    end.
    Ne pas oublier qu'en Flash les éléments de l'écran sont modifiables sans avoir besoin de redessiner quoi que ce soit.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre expérimenté
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 410
    Points : 1 575
    Points
    1 575
    Par défaut
    Merci pour tes rectifs. En effet, je raisonne toujours comme en delphi... C'est difficile de s'adapter . Le textfield, je le considère comme la méthode textout de canvas alors que cet un objet...c'est un réflexe...il faut que je me fasse violence...
    Je pense que maintenant c'est rentré...

    Le fait de redessiner aussi (réflexe delphi...)

    merci, tes corrections sont nécessaires.

  7. #7
    Membre expérimenté
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 410
    Points : 1 575
    Points
    1 575
    Par défaut
    Pense aussi à la possibilité de changer le curseur parce que là, on n'a pas la possibilité d'en changer...

    bonne soirée.


    ps: j'ai modifié _x et _y de TextField en number...dans Flash8

  8. #8
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    7 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 7 416
    Points : 24 305
    Points
    24 305
    Par défaut
    Citation Envoyé par Archimède Voir le message
    Pense aussi à la possibilité de changer le curseur parce que là, on n'a pas la possibilité d'en changer...

    bonne soirée.


    ps: j'ai modifié _x et _y de TextField en number...dans Flash8
    je n'ai pas testé mais voici ce que j'ai trouvé en ActionScript... le listener peut très bien être le movieclip lui même.

    il faut juste ajouter l'objet Mouse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      Mouse = external class
      { events :
        procedure onMouseDown;
        procedure onMouseMove;
        procedure onMouseUp;
        procedure onMouseWheel(delta: Number; scrollTarget: TObject);
      }
        class procedure addListener(listener: TObject);
        class function hide: Number;
        class function removeListener(listener: TObject): Boolean;
        class function show: Number;
      end;
    il faudrait que je trouve une syntaxe pour les évènements du listener...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Itk : utilisation de la fonction "GetPixel"
    Par loisir1976 dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 16/04/2010, 12h57
  2. [Turbo Pascal] Peut-on utiliser GetPixel pour analyser une image sans l'afficher ?
    Par _Hope_ dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 01/01/2009, 22h07
  3. utilisation de GetPixel
    Par ralf91 dans le forum C#
    Réponses: 6
    Dernier message: 06/04/2008, 19h17
  4. probleme utilisation getpixel
    Par nicolovitch dans le forum Windows
    Réponses: 3
    Dernier message: 14/05/2007, 08h00
  5. [Pil] utilisation de getpixel
    Par duplo dans le forum Tkinter
    Réponses: 7
    Dernier message: 20/12/2005, 19h01

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