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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    octobre 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2006
    Messages : 65
    Points : 15
    Points
    15

    Par défaut TGlyph transparent moving

    Bonjour à tous,

    J'aimerais déplacer un TGlyph avec la souris.
    Le glyph est un PNG avec des zones transparentes.
    J'aimerais déplacer le TGlyph uniquement si il clique dans une zone non transparente.

    Votre aide est la bienvenue,

    A+

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

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

    Informations forums :
    Inscription : mars 2005
    Messages : 3 251
    Points : 9 357
    Points
    9 357
    Billets dans le blog
    5

    Par défaut

    Et où se situe la difficulté ? Quel point achoppe ? Où bloquent vos tests ? Quelles pistes avez-vous explorées ?
    Delphi 5 Pro - Delphi 10.2 Tokyo Community Edition - CodeTyphon 6.50 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    octobre 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2006
    Messages : 65
    Points : 15
    Points
    15

    Par défaut

    Salut,

    J'utilise un TImageList avec comme fichier une image PNG avec des zones transparentes.
    J'utilise également un TGlyph avec dans la propriété "images"le TImageList ci-dessus.
    Et un "0" pour la propriété "ImageIndex" du glyph.

    Le problème c'est que je ne veux pas que l'évenement OnMouseDown fonctionne si on clique sur une zone transparente (dans un TGlyph).

    Merci à vous,

    A+

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 136
    Points : 25 442
    Points
    25 442
    Billets dans le blog
    20

    Par défaut

    Bonjour,

    Déjà, cela veut dire que vous avez réussi à coder évènement onmousedown ou équivalent. Question que vous avez posée ici il serait de bon aloi d'indiquer que celle-ci est résolue (le bouton ) voire ne pas rechigner à mettre un d'encouragement à ma réponse pour signaler que celle-ci vous a aidé.
    Et, tant qu'à faire de confirmer que vous utilisez Rio et FMX

    Il serait également de bon ton de nous indiquer ce que vous avez déjà codé dans ce fameux évènement

    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
     
    type
      THackGlyph = Class(TGlyph);
     
      TForm5 = class(TForm)
      ....
       procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
        procedure GlyphOnMouseDown(Sender: TObject; Button: TMouseButton;
                                 Shift: TShiftState; X, Y: Single);
      .....
    var
      Form5: TForm5;
     
    implementation
    procedure TForm5.FormCreate(Sender: TObject);
    begin
    THackGlyph(glyph1).HitTest:=true;
    glyph1.OnMouseDown:=GlyphOnMouseDown;
    end;
     
    procedure TForm5.GlyphOnMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Single);
    var bdata : TBitmapData;
        Color : TAlphaColor;
    begin
      Glyph1.MakeScreenShot.Map(TMapAccess.maRead,BData);
      Color:=BData.GetPixel(Trunc(x),Trunc(y));
      if Color<>TAlphaColors.Null then
        Showmessage(Format('x=%3.f  y=%3.f Color %x',[x,y,Color]));
    end;
    Maintenant, la question que je vous pose est : pourquoi utiliser un TGlyph + un TImageList ?
    1 - Vous êtes obligé de passer par un "hacking ou helper" pour accéder à des propriétés privées de TGlyph pour cativer le hittest et mettre en place le(s) évènement(s) nécessaire(s) , alors que TImage n'en a pas besoin.
    2 - Vous ajoutez un TImageList alors que TImage est propriétaire d'un TMultirResbitmap qui est un équivalent amélioré
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  5. #5
    Membre chevronné
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    1 358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : décembre 2006
    Messages : 1 358
    Points : 2 035
    Points
    2 035

    Par défaut

    Bonjour,

    ce serait également sympa de dire si les réponses que l'on t'a apportées ici t'ont aidé et si ton problème de texture est résolu.

    ça ferait plaisir à ceux qui veulent t'aider !

    A+
    Charly

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    octobre 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2006
    Messages : 65
    Points : 15
    Points
    15

    Par défaut

    Merci pour vos deux précédants tutoriaux (texture colorée et événement OnClick). Merci à Charly910 pour son programme.

    Cependant l'événement OnMouesDown ne doit fonctionner uniquement si on clique dans une zone non transparent de mon Glyph (PNG transparent).

    Merci à vous,

    A+

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

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

    Informations forums :
    Inscription : mars 2005
    Messages : 3 251
    Points : 9 357
    Points
    9 357
    Billets dans le blog
    5

    Par défaut

    Bonjour,

    Je pense que Serge a bien compris la demande et y a répondu avec plus qu'un début de piste.

    Ce dont j'ai du mal à être sûr, c'est si vous cherchez à coder avec l'aide des autres ou si vous attendez qu'ils codent pour vous ?

    En reprenant le code de Serge, au lieu d'afficher un message si le pixel du TGlyph n'est pas transparent, il faut débuter le mouvement en permettant de changer ses coordonnées dans le OnMouseMove, permission qu'on suspendra lors du OnMouseUp. Il y a certainement des discussions en traitant sur le forum pour vous orienter si l'implémentation pose problème, ou bien il sera temps de revenir poser ici une question.
    Delphi 5 Pro - Delphi 10.2 Tokyo Community Edition - CodeTyphon 6.50 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 136
    Points : 25 442
    Points
    25 442
    Billets dans le blog
    20

    Par défaut

    Bonsoir,

    Effectivement j'avais très bien compris la demande mais j'estime que fournir du code tout prêt n'est pas une façon d'apprendre.
    Le plus difficile je l'ai, je pense, dégagé*: le message ne s'affiche que si le pixel du glyphe n'est pas transparent, à vous de faire le bloc de déplacement.

    Merci pour vos deux précédants tutoriaux (texture colorée et événement OnClick).
    ce ne sont pas des tutoriels (en écrire est un processus beaucoup plus long) mais de simples réponses.

    [Edit 13/01/2019]
    En parlant de tutoriels, si vous lisez celui-ci chapitre III-B-1 vous y lirez le moyen précis de faire en sorte que votre glyphe se déplace, vous pourrez même largement le simplifier puisque vous pourrez utiliser l'image du TGlpyh (donc pas besoin d'un bitmap intermédiaire comme dans le code présenté)
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

Discussions similaires

  1. comment faire un background transparent?
    Par guigui1005 dans le forum Composants
    Réponses: 5
    Dernier message: 17/05/2012, 22h45
  2. [Composant] La transparence
    Par Nuts07 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/05/2003, 15h51
  3. Comment rendre transparent le tour d un icone
    Par NeoRonin dans le forum Composants VCL
    Réponses: 7
    Dernier message: 03/03/2003, 02h40
  4. Réponses: 1
    Dernier message: 23/02/2003, 07h22
  5. ouverture d'une form en fondu transparent
    Par nicholz dans le forum Composants VCL
    Réponses: 9
    Dernier message: 08/01/2003, 12h06

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