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

Delphi Discussion :

WebBrowser - Affichage en miniature


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 207
    Par défaut WebBrowser - Affichage en miniature
    Bonjour à tous,

    J'aimerai afficher dans un WebBrowser dimensionné en 400 x 300 pixels les pages web que je consulte qui sont dans des définitions variées.

    Exemple, une page web dessinée en 1024 x 768 peut elle être visualisée intégralement dans une fenêtre 400 x 300 en lui appliquant un facteur zoom inférieur à 1 ?


    Si oui comment faire ?

    Merci d'avance,
    Wilco

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Par défaut
    Bonjour,

    Citation Envoyé par Wilco
    J'aimerai afficher dans un WebBrowser dimensionné en 400 x 300 pixels les pages web que je consulte qui sont dans des définitions variées.

    Exemple, une page web dessinée en 1024 x 768 peut elle être visualisée intégralement dans une fenêtre 400 x 300 en lui appliquant un facteur zoom inférieur à 1 ?

    Si oui comment faire ?
    Que veux tu dire par "les pages web qui sont dans des définitions variées" ? Dans la plupart des cas les pages n'ont pas de taille prédéfinie, mais le contenu va essayer de s'adapter à la taille (surtout à la largeur) de la fenêtre d'affichage. Pour les faibles résolutions ce n'est pas toujours heureux (tous ceux qui ont essayé de naviguer avec un PDA me comprendront).

    Si ton but est de faire un aperçu de l'aspect de la page tu peux "prendre une image" affiché par un navigateur dans une résolution usuelle, puis réduire cette image en 400x300. Bien sûr dans ce cas le texte risque d'être illisible. J'ai déjà fait ça (mais en C++ avec KHTML). Je devrais pouvoir t'aider mais essaye de préciser ce que tu veux faire.

    Sovitec

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 207
    Par défaut
    Je souhaite afficher l'aperçu d'une page web dans une fenêtre de 400x300.
    Effectivement les textes seront peu ou pas lisibles.


    On affiche bien des miniatures lorsque l'on consulte un dossier contenant des images, je souhaite faire la même chose mais avec des pages HTML.

    Merci d'avance
    Wilco

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Par défaut
    Contrairement aux images les pages web n'ont pas de dimensions prédéfinies, celle ci s'adapte à la taille de la fenêtre de visualisation, même si certains "optimisent" leurs pages pour certaines résolution.

    Ensuite je ne sais pas où tu bloques : il suffit d'afficher la page, prendre une image et la réduire aux dimensions voulues.

    Quelques pièges :
    - Si la page est principalement en flash il vaut mieux prendre une image après avoir laissé dérouler l'animation quelques secondes.
    - Si les cookies ne sont pas gérés certaines pages n'afficheront pas grand chose.

  5. #5
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Citation Envoyé par Wilco
    Je souhaite afficher l'aperçu d'une page web dans une fenêtre de 400x300.
    Effectivement les textes seront peu ou pas lisibles.


    On affiche bien des miniatures lorsque l'on consulte un dossier contenant des images, je souhaite faire la même chose mais avec des pages HTML.

    Merci d'avance
    Wilco
    Tu as presque répondu à ta question...

    Tu "imprimes" ta page dans un bitmap de dimensions 1024x768 (par exemple), et tu affiches le bitmap dans le canvas d'un autre bitmap ou tpaintbox grace à Canvas.SretchDraw();

  6. #6
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Démonstration

    Le fichier joint inclus notemment cette procédure qui vous sera certainement tous très utile

    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
    uses ActiveX,SHDocVw,Windows,Graphics;
    procedure CopyWebToCanvas(AWebBrowser:TWebBrowser;ACanvas:TCanvas;HandlePeripheriqueCible:HDC=0);
    var
      ViewObject: IViewObject;
      sourceDrawRect: TRect;
      Temp,Dest:TBitmap;
    begin
        if AWebBrowser.Document <> nil then
        try
           Dest:=TBitmap.Create;
           Dest.PixelFormat:=pf24bit;
           Temp:=TBitmap.Create;
           Temp.PixelFormat:=pf24bit;
           Temp.Width:=AWebBrowser.Width;
           Temp.Height:=AWebBrowser.Height;
     
           AWebBrowser.Document.QueryInterface(IViewObject, ViewObject);
           if ViewObject <> nil then
           try
              sourceDrawRect := Rect(0, 0, Temp.Width, Temp.Height);
              ViewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, HandlePeripheriqueCible,
              Temp.Canvas.Handle, @sourceDrawRect, nil, nil, 0);
     
           finally
                  ViewObject._Release;
     
                  Dest.Width:=Temp.Width-GetSystemMetrics(SM_CXVSCROLL);
                  Dest.Height:=Temp.Height;
                  BitBlt(Dest.Canvas.Handle,0,0,Dest.Width,Dest.Height,Temp.Canvas.Handle,0,0,SrcCopy);
     
           ACanvas.Draw(0,0,Dest);
           Temp.Free;
           Dest.Free;
           end;
        except
       end;
    end;
    HandleDePeripheriqueCible reçoit le Handle de périphérique surlequel sera dessiné l'image finale (par défaut, c'est mis à zéro : HDC de l'écran, donc vous n'avez pas à vous en soucier sauf si vous souhaitez imprimer dans le canvas de l'imprimante, par exemple).

    La fonction fonctionne "Off Screen", c'est à dire que votre webBrowser n'a pas besoin d'être visible pour récupérer votre ScreenShot.

    Ci-joint un projet complet :
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 9
    Dernier message: 17/08/2011, 01h29
  2. lightbox - affichage image miniature en grand
    Par claire34 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 09/01/2010, 17h12
  3. Affichage en miniature
    Par alexismarque dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 22/06/2009, 11h52
  4. [CKEditor] Affichage des miniatures images
    Par Tchupacabra dans le forum Bibliothèques & Frameworks
    Réponses: 6
    Dernier message: 04/04/2008, 10h38
  5. Template ( phpBB-Phplib ) et affichage de miniature via GD2 :x
    Par Rohann dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 06/09/2006, 10h47

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