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 VCL Delphi Discussion :

visualisation et zoom d'une image


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 26
    Points
    26
    Par défaut visualisation et zoom d'une image

    Bonjour à tous !


    Dans l'appli que je suis en train de développer, j'affiche une image dans une PaintBox et je dois offrir la possibilité à l'utilisateur de faire un zoom sur l'image .

    Le problème, c'est que l'utilisateur n'a pas la possibilité ne peut faire le zoom qu'à l'aide d'un curseur qu'il déplace avec certaines touches du clavier.

    Est-il possible d'avoir un curseur sur une PaintBox?
    J'utilise le Canvas de la PaintBox pour afficher l'image: est-ce une bonne solution ?

    :uc:
    Merci à tous pour vos réponses et/ou suggestions.

  2. #2
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 37
    Points
    37
    Par défaut
    salut,

    Si tu veux faire des zooms "propres", je te conseille d'utiliser la librairie
    graphics32 qui propose pas mal de fonctions graphiques, comme les zooms ( avec filtres ), la rotation, transparence alpha etc.
    Il y a une demo ( très simple, une dizaine de lignes de code ) Image32_ex
    qui fait exactement ce que tu cherches....
    Et c'est gratuit.
    Tu peux aller chercher bonheur ici :http://g32.org

    Sinon, un paintbox ne propose pas en soi de scrollbar, mais il te suffit d'en
    rajouter une qq part, ce qui te permet de gerer le facteur de zoom, methode utilisée dans la démo citée plus haut....

    @+

  3. #3
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!

    Je programme un jeu d'Echecs, et je veux faire une fonction de redimensionnement de la table (zoom out)...
    J'ai trouvé un composant qui ne fait que ça, je trouve que c'est plus simple que d'avoir une librairie avec plein de fonctions dont je ne me servirais pas!!!
    http://site.voila.fr/subut/data4/thumbsV22.zip (471 ko)
    Un démo: http://site.voila.fr/subut/data4/thumbs.zip (349 ko)
    Pour améliorer la qualité de l'image, je comptais utiliser un compo pour l'antialiasing.
    http://site.voila.fr/subut/data4/faalias.zip (224 ko)

    ...Mais je crois avoir trouvé une unité qui fait les deux (pas encore testé):
    JanFX v.1.0 FWS 19 Kb 03.07.00 By Jan Verhoeven.
    JanFX is a library of 89 bitmap transformation routines like: rotate; smooth resize; filters; make seamless; buttonize; color, focus and light effects; fisheye and twist distortions; alpha blending; plasma and many more.
    http://homepages.borland.com/torry/v...ects/janfx.zip (19 ko)

    J'ai aussi trouvé une unité (pas d'install) qui devrait mieux te convenir je crois, car elle permet d'agrandir un bitmap...
    ya aussi une petite démo: http://site.voila.fr/subut/data4/pkimgp.zip (184 ko)

    Si tu as des questions, n'hésite pas à me demander!
    Bon développement!


  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 66
    Points : 129
    Points
    129
    Par défaut
    Les codes qui font du zoom, c'est pas ce qui manque.

    Un code (non testé) assez simple :
    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
     
    procedure SetCanvasZoomFactor(Canvas: TCanvas; AZoomFactor: Integer); 
    var 
      i: Integer; 
    begin 
      if AZoomFactor = 100 then 
        SetMapMode(Canvas.Handle, MM_TEXT); 
      else 
      begin 
        SetMapMode(Canvas.Handle, MM_ISOTROPIC); 
        SetWindowExtEx(Canvas.Handle, AZoomFactor, AZoomFactor, nil); 
        SetViewportExtEx(Canvas.Handle, 100, 100, nil); 
      end; 
    end; 
     
    procedure TForm1.Button1Click(Sender: TObject); 
    var 
      bitmap: TBitmap; 
    begin 
      bitmap := TBitmap.Create; 
      try 
        bitmap.Assign(Form1.image1.Picture.Bitmap); 
        SetCanvasZoomFactor(bitmap.Canvas, 70); 
        Canvas.Draw(30, 30, bitmap); 
      finally 
        bitmap.Free 
      end; 
    end;
    A vérifier ...

    Sinon, vous pouvez utiliser les composants JVCL Jedi : voir l'exécutable de démo dans le répertoire : ... \JVCL\Bin\JvZoomProj.exe

    Enfin, signalons le programme Rotozoom à l'adresse :
    http://www.alistairkeys.co.uk/download/rotosrc.zip

    A+

  5. #5
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!

    J'ai testé ton code Delphi-fan, et il fonctionne bien, surtout pour le zoom out!
    J'en ai fait une petite démo pour notre amie...
    C'est pour faire varier le zoom de 10 à 200% avec une TrackBar:
    http://site.voila.fr/subut/data4/zoomtest.zip (50 ko)

    J'avais déjà essayé RotoZoom: À chaque fois, il manque les sources dans l'archive! Cette fois, le prog me réclame la classe TCDNDXTimer, donc l'unité CDNDXTimer est manquante!!! Je déteste télécharger des progs où il manque des compos pour pouvoir les compiler, sur une démo en plus!

    Il ya un tutoriel Delphi sur le site, à propos d'une loupe pour la souris...
    http://www.developpez.com/club/llb/loupe.htm

    Si tu veux améliorer la qualité d'un zoom in, il faut utiliser un filtre d'antialiasing.
    Juste pour te donner une idée du filtre, j'ai fait un petit dessin à la main...
    Ce serait trop beau si ça pouvait être aussi parfait!
    Voici dans l'ordre, l'image originale / zoom / antialiasing.



    http://sub0.developpez.com/delphi/AAlias.zip

    à+

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

Discussions similaires

  1. Zoom sur une image
    Par mariemor64 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/05/2006, 20h47
  2. Zoom sur une image
    Par flo456 dans le forum Général JavaScript
    Réponses: 35
    Dernier message: 19/05/2006, 07h48
  3. [débutant] zoom sur une image
    Par Anthony17 dans le forum Delphi
    Réponses: 1
    Dernier message: 16/05/2006, 22h09
  4. Réponses: 3
    Dernier message: 02/07/2004, 13h53
  5. Zoom sur une image
    Par AurelBUD dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/05/2004, 17h05

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