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

Composants FMX Delphi Discussion :

Equivalent TPenMode VCL-->FMX


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Par défaut Equivalent TPenMode VCL-->FMX
    Bonjour,

    J'effectue quelques tests graphiques sur FMX et je ne trouve pas l'équivalent du TpenMode de VCL.

    J'ai essayé d'appliquer les conseils de ce lien, mais je ne comprends pas toute les finalités :

    http://stackoverflow.com/questions/1...alent-drawline

    Merci de votre aide.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 097
    Par défaut
    .TCanvas.DrawLine utilise propriétés Stroke, StrokeThickness, StrokeCap, StrokeDash et StrokeJoin.

    A part le motif, pas de gestion de couleur plus avancé !
    AOpacity à 50 peut remplacer pmMerge
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Par défaut
    Merci ShaiLeTroll pour votre aide.

    J'utilise déjà toutes ses propriétés mais je ne sais pas comment faire pour reproduire l'équivalent Canvas.Pen.Mode := pmNotXor

    Merci de votre aide.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Par défaut
    J'ai réussi a mettre au point une solution pour mon cas.
    Je vous la soumet :

    Je désirais dessiner un rectangle et faire apparaître le contour lors de l'événement mouseMove.

    Pour cela je sauvegarde dans un TBitmap temporaire l'image dans l'événement MouseDown :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FTempDrawbitmap := TBitmap.Create(0,0);
    FTempDrawbitmap.Assign(FImage.Bitmap);
    puis avant de dessiner mon rectangle dans l'événement MouseMove, je la restaure dans le rectangle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    R.TopLeft := PointF(0.0, 0.0);
      R.BottomRight := PointF(FPaintBox.Width, FPaintBox.Height);
      FPaintBox.Bitmap.Canvas.DrawBitmap(FTempDrawBitmap, R, R, 100);
      FPaintBox.Bitmap.Canvas.Stroke.Color := claBlack;
      FPaintBox.Bitmap.Canvas.DrawRect(Lrect, 0, 0, AllCorners, 1);

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 097
    Par défaut
    pmNotXor ça donne comme résultat ?
    Je crois avoir utilisé uniquement pmNot, qui inverse juste la couleur de fond, blanc sur noir, jaune sur bleu ... qui garanti un contraste marqué

    Ah, je suppose qu'en appliquant deux fois pmNotXor cela devait revenir à l'image d'origine ?
    Avec pmNot, j'avais aussi utilisé ce principe, d'annuler le rectangle avec lui même sans avoir mémorisé l'image d'avant !

    En FMX, as-tu accès à l'API sous-jacente ?
    Si oui, avec des directives de compilation ou une Pattern Strategy tu fais un code selon l'API qui utilisera au mieux les capacités de chacune !

    Sinon, perso, le coup du sélecteur rectangle, je l'ai fait avec un TPanel transparent en supprimant le traitement de WM_ERASEBKGND dans la WndProc du coup, il ne dessinait que son contour 3D et la TImage se redessinait d'elle même lorsque le Panel bougeait dessus !
    le Déplacement géré par WM_LBUTTONUP \ WM_SYSCOMMAND, SC_MOVE
    Une solution encore moins transposable en FMX que TPenNode

    Tu devrais regarder si tu peux avoir un TShape que tu peux déplacer\dimensionner lors du OnMouveMove\OnMouseDown ...
    Images attachées Images attachées  
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

Discussions similaires

  1. XE7 - AssignPrn VCL et FMX différents ?
    Par Papy214 dans le forum Langage
    Réponses: 10
    Dernier message: 13/07/2015, 17h46
  2. XE7 - VCL et FMX : réaliser un paquet
    Par Invité dans le forum Delphi
    Réponses: 6
    Dernier message: 10/11/2014, 19h11
  3. Réponses: 0
    Dernier message: 17/04/2013, 20h21
  4. Composants pour VCL et FMX
    Par cadetill dans le forum Composants VCL
    Réponses: 1
    Dernier message: 07/01/2013, 09h52
  5. Equivalent de Application.Minimize pour FMX ?
    Par sinfoni dans le forum Composants FMX
    Réponses: 4
    Dernier message: 12/04/2012, 10h39

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