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 :

Utilisation de TImage dans un TImageViewer


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 140
    Billets dans le blog
    5
    Par défaut Utilisation de TImage dans un TImageViewer
    Bonjour a tous

    Je suis en train de me mettre à FMX et j'avoue être un peu perdu.

    Voilà mon problème j'ai une carte sur laquelle je veux afficher des pions.

    J'ai une série d'image type bitmap pour ma carte et mes pions.

    Pour afficher ma carte et mes pions voici ce que je faisait jusqu'à présent

    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
     
     
    //vueImg :TImageViewer
    //Bmp,Bmp2 :TBitmap
     
    procedure TFTest.dessine;
    var
      SrcRect, DstRect: TRectF;
      BmpWrk: TBitmap;
      i: Integer;
    begin
      BmpWrk:=TBitmap.Create;
      Bmp2.LoadFromFile('pion1.png');
      BmpFond.LoadFromFile('carte.png');
      Bmp.Assign(BmpFond);
      Bmp.Canvas.BeginScene;
      for i := 0 to 5 do
      begin
        BmpWrk.Assign(Bmp2);
        BmpWrk.Rotate(45);
        SrcRect.Left := 0;
        SrcRect.Top := 0;
        SrcRect.Width := BmpWrk.Width;
        SrcRect.Height := BmpWrk.Height;
        DstRect.Left := 500 + 100 * i;
        DstRect.Top := 250;
        DstRect.Width := BmpWrk.Width;
        DstRect.Height := BmpWrk.Height;
        Bmp.Canvas.DrawBitmap(BmpWrk, SrcRect, DstRect, 1, true);
      end;
      Bmp.Canvas.EndScene;
    vueImg.Bitmap.Assign(Bmp);
      BmpWrk.Free;
    end;
    Ça fonctionne très bien mais le rendu graphique n'est pas toujours bon aussi j'avais pensé mettre mes pions dans des TImage pour pouvoir avoir une meilleure qualité graphique et gérer plus facilement (et plus rapidement) ce qui est zoom et rotations.

    Seulement je ne vois pas comment afficher ces TImages dans mon TImageViewer

    Une idée

  2. #2
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Le TImageViewer est un conteneur qui ne possède qu'une seule image, ayant elle-même son bitmap et canvas que l'on peut bidouiller si on veut.

    Dans ton cas, si tu travailles sur un damier et que tu veux y placer des pions, plutôt que de créer une seule image à la fois, je te recommande de tout mettre dans le TImageList qui gère plusieurs résolutions pour la même image.

    Ensuite pour chaque élément graphique utilise un TLayout dont tu actives HitTest pour que le onClick fonctionne. Et tu y cases un TGlyph qui pointera sur ta TImageList.

  3. #3
    Membre émérite
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 140
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par pprem Voir le message
    Le TImageViewer est un conteneur qui ne possède qu'une seule image, ayant elle-même son bitmap et canvas que l'on peut bidouiller si on veut.

    Dans ton cas, si tu travailles sur un damier et que tu veux y placer des pions, plutôt que de créer une seule image à la fois, je te recommande de tout mettre dans le TImageList qui gère plusieurs résolutions pour la même image.

    Ensuite pour chaque élément graphique utilise un TLayout dont tu actives HitTest pour que le onClick fonctionne. Et tu y cases un TGlyph qui pointera sur ta TImageList.
    Malheureusement ce n'est pas un damier. Par contre je retiens l'idée des TImageList.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 657
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 657
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Même si ce n'est pas un damier c'est cette idée de Patrick que j'aurais soumise (des Layouts dans un ScaledLayout, une ImageList pour les éléments "fixes") le petit plus de ImageList pour un même élément il peut y avoir plusieurs résolutions (multiresbitmap).
    Reste l'avantage du zoom du TImageViewer, là je dois avouer n'avoir pas cherché la petite bête
    Juste une idée, je ne sais si elle est réalisable, mettre le Layout principal dans une Scrollbox, je fais déjà ça pour visualiser des PDF donc c'est très certainement possible pour un Layout

    un écran nous montrant une image à faire aurait été un +

  5. #5
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Citation Envoyé par Gouyon Voir le message
    Malheureusement ce n'est pas un damier. Par contre je retiens l'idée des TImageList.
    En fait ça marche aussi si tu es sur une carte. Le seul problème est surtout l'affichage du fond, selon s'il déborde de l'écran ou pas.

    L'avantage avec FireMonkey c'est que tout composant peut en accueillir d'autres, donc à la limite tu peux utiliser un TImageViewer pour lui ajouter en enfant d'autres images, mais ce sera à toi de synchroniser l'affichage lors d'un changement d'échelle ou de déplacement de l'offset de l'image du TImageViewer, c'est pour cela qu'il vaut mieux tout gérer dès le départ en empilant des TGlyph et TLayout éventuellement dans un TScrollbox selon tes besoins ou dans une zone dans laquelle tu gèrerais toi-même les éventuels mouvements.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 460
    Par défaut
    En suivant les liens cités dans cette discussion, dans le blog de pprem je suis tombé sur quelque chose qui m'intéresse beaucoup :

    En y associant des filtres et effets on peut obtenir tout un tas de choses qu'il aurait été très compliqué de gérer en VCL et si en plus on met ça sous forme de DLL, on peut importer dans un projet Windows VCL pur des images sympa générées par un morceau de FMX... mais je m'égare.
    Penses-tu détailler cela ?

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 657
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 657
    Billets dans le blog
    65
    Par défaut
    J'avais oublié le TPath ou le TPathLabel à la place des images (pour des trucs simples comme un pion mais aussi plus complexes)
    Nom : Capture.PNG
Affichages : 546
Taille : 72,9 Ko
    je suis loin d'être un artiste mais les svg gratuits sont légions

  8. #8
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Citation Envoyé par Bernard B Voir le message
    En suivant les liens cités dans cette discussion, dans le blog de pprem je suis tombé sur quelque chose qui m'intéresse beaucoup :
    Penses-tu détailler cela ?
    En fait il est assez simple de manipuler des images à partir d'objets FMX. Il suffit de le faire par programmation dans une unité ou de préférence une DLL (pour éviter les conflits de types) et appeler ça depuis du code VCL.

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/11/2006, 10h59
  2. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  3. Réponses: 3
    Dernier message: 11/03/2004, 10h58
  4. impossible d'utiliser ma fonction dans un insert
    Par caramel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/04/2003, 15h04
  5. Utilisation de Pointeurs dans API windows
    Par Drooxy dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 13/03/2003, 22h39

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