menu
  Home  ==>  transparents  ==>  lecteur_de_transparents   

Lecteur de Transparents - John COLIBRI.

  • résumé : Ce projet lit un fichier .PNG et permet la navigation dans ces fichiers
  • mots clé : .PNG - fichier graphique - affichage - navigation
  • logiciel utilisé : Windows XP, Delphi 6.0
  • matériel utilisé : Pentium 1.400Mhz, 256 M de mémoire, 120 Giga de disque dur
  • champ d'application : Delphi 1 à 2005 sur Windows
  • niveau : débutant en Pascal et Delphi
  • plan :


1 - Introduction

Nous fournissons un certain nombre de présentations sur ce site. Chaque page est stockée sous forme d'un fichier graphique au format .PNG. Actuellement, le .ZIP contient un fichier .HTML qui permet de visualiser les pages successives en faisant défiler les images.

Nous présentons ici un programme Delphi simple qui charge les image une à une et permet de naviguer dans la suite des images




2 - Le programme

2.1 - Les fichiers .PNG

Nous utilisons depuis plus de deux ans les fichiers graphiques au format .PNG. Nous avons choisi ce format:
  • car il est, semble-t-il, libres des problèmes de Copyright qui affectent les fichiers .GIF
  • il existe plusieurs unités Delphi qui permettent de lire et écrire des tBitmap à partir de fichiers .PNG.
  • ils prennent plus de temps à charger qu'un fichier .BMP simple, compte tenu de la compression effectuée, mais sont aussi plus compacts, ce qui permet d'avoir des .ZIP de taille raisonnable


2.2 - La Lecture des fichiers .PNG

Nous lisons les fichiers .PNG en utilisant une unité que nous avons trouvée sur le Web, et dont l'auteur essentiel semble être Jack Goman. Cet auteur a utilisé une unité d'importation d'une librairie LibPng.DLL, réalisée par d'autre auteurs. Nous avons scrupuleusement laissé les copyrights de ces deux unité, que nous avons utilisées sans aucune modification.

L'unité u_png_dll_import.pas contient les définitions Delphi correspondant à LPng.DLL. Nous avons laissé toutes les primitives, mais les procédures qui ne sont pas utilisées par u_png_unit.pas sont en commentaire.

L'unité u_png_unit.pas contient les deux fonctions de base:

  • pour lire un fichier .PNG et l'afficher, nous appelons:

    function f_read_bitmap_from_png_file(p_full_file_namestring;
        p_c_bitmapTBitmap): boolean;

    et:

    • p_full_file_name contient le nom du fichier (chemin, nom et extension)
    • p_c_bitmap est une tBitmap qui a créée avant l'appel
  • pour écrire un fichier .PNG (sauvegarder une tBitmap dans un fichier .PNG), nous pouvons utiliser:

    function f_write_bitmap_to_png_file(p_full_file_namestring
        p_c_bitmapTBitmapp_transparent_colorTColor): boolean;

    et:

    • p_full_file_name contient le nom du fichier (chemin, nom et extension)
    • p_c_bitmap est une tBitmap qui doit être sauvegardée
    • p_transparent est la couleur qui sera considérée par LPng comme la couleur transparente


2.3 - L'affichage de transparents

Un projet simple permet de charger chaque fichier .PNG d'un répertoire dans une tPaintBox. Et quelques boutons permettent le chargement des images successives ou précédentes.

Voici un instantané sur un transparent:



Au niveau fonctionnement:

  • la tFileListBox contient la liste des fichiers à afficher
  • "load_" permet de charger et afficher le fichier courant de cette liste. Nous utilisons simplement:

    var g_c_bitmaptBitmapNil;

      g_c_bitmap:= tBitmap.Create;
      f_read_bitmap_from_png_file(p_pathp_file_nameg_c_bitmap);
      PaintBox1.Canvas.Draw(0, 0, g_c_bitmap);

  • les différents boutons, clicks souris et frappes clavier servent alors à changer, charger et afficher un autre fichier .PNG



3 - Mode d'Emploi

Pour utiliser le lecteur:
  • compilez le projet
  • placez les transparents dans un répertoire, avec des noms de fichiers .PNG dans un ordre croissant (par exemple 00_pattern.png, 01_pattern.png, ou oracle_00.png oracle_10.png etc)

  • pour visualiser les transparents
       sélectionnez l'onglet "load__"
       naviguez à l'aide du tDirectoryListBox pour sélectionner le répertoire contenant les transparents
       cliquez sur le premier transparent
       sélectionnez l'onglet "show"
  • pour naviguer:
    • ">", le clic droit souris, PageDown et Espace avancent d'un transparent
    • "<", le click gauche souris, PageUp et BackSpace reculent d'un transparent
    • ">>" et Contrôle+PageDown vont à la fin de la liste
    • "<<" et Contrôle+PageUp vont au début de la liste
    • "full_screen" maximise la forme (sans changer la taille de la tBitMap)
    • "compute_fit_size" étire toutes les images en effectuant une règle de trois sur la première image et la taille de l'écran
Pour faciliter la démonstration, le .ZIP contient aussi 5 transparents de notre présentation "UML et Design Patterns Delphi" que nous avions présenté à la Borcon 2004 (et dont les transparents complets sont sur notre site http://www.jcolibri.com).




4 - Améliorations

Il s'agit d'un projet "minimal", adapté à nos transparents .PNG. Il est assez aisé de l'améliorer:
  • en généralisant le type de fichier graphique utilisé (.BMP, .JPEG ...)
  • en évitant la convention sur les noms croissants: il suffit d'utiliser un fichier .TXT associé et naviguer dans cette liste de noms de fichiers
  • en ajoutant d'autres possibilités de navigation
Nous pouvons aussi réaliser un affichage de transparent en interprétant un texte ASCII. C'est en fait ce que nous faisons:
  • le texte des présentations est tapé dans Ed (notre éditeur, capable de générer à la fois du PostScript (pour Pascalissime et les livres), du HTML (pour ce site) et des bitmaps (pour l'affichage de transparents)
  • à cause de la mise en page, la syntaxe est plus complexe que celle de NotePad, et de ce fait, l'éditeur est assez volumineux
  • c'est pourquoi nous avons préféré offrir les fichiers PNG résultants plutôt que les textes au format Ed
Mais vous pouvez bien sûr partir d'un quelconque format textuel "enrichi" et afficher le résultat dans tPaintBox.Canvas




5 - Télécharger le source

Pour télécharger, cliquez: Ce .ZIP contient des chemins RELATIFS. Par conséquent:
  • créez un répertoire n'importe où sur votre machine
  • téléchargez en cliquant les liens ci-dessous
  • placez le .ZIP dans votre répertoire
  • dézippez et les sous-répertoires nécessaires seront créés
  • compilez et exécutez
Au niveau sécurité:
  • les .ZIP:
    • ne modifient pas votre PC (pas de changement de la Base de Registre, d'écrasement de DLL ou autre .BAT). Aucune modification de répertoire ou de contenu de répertoire ailleurs que dans celui où vous dézippez
    • ne contiennent aucun programme qui s'exécuterait à la décompression (.EXE, .BAT, .SCR ou autre .VXD) ou qui seraient lancés plus tard (reboot)
    • passez-les à l'antivirus avant décompression si vous êtes inquiets.
  • les programmes eux-mêmes ne changent pas la base de registre et ne modifient aucun autre répertoire de votre machine
  • pour supprimer le projet, effacez simplement le répertoire.
ATTENTION:
  • le .ZIP contient LPng.Dll, que nous avons copié du site de Jack GOMAN. C'est la même .DLL que nous utilisons depuis plus de 5 ans sans aucun souci, et, si vous avez des angoisses, vous devez pouvez trouver des kyrielles de DLL PNG équivalentes via Google.
  • LPng.Dll doit être dans un chemin connu de l'EXE. Le mieux est de copier cette DLL dans le même répertoire que l'EXE (ce qui est fait automatiquement en dézippant notre projet)


Avec les mentions d'usage:


6 - L'auteur

John COLIBRI est surtout intéressé par la programmation en Pascal, Delphi et Kylix. Son site contient des articles, la descriptions de ses livres, le programme des stages qu'il anime tous les mois.
L'Institut PASCAL - 26 Rue Lamartine 79009 PARIS
Tél 01.42.83.69.36 / 06.87.88.23.91 - e-mail: formations@formations-delphi.com
Créé: mar-03. Maj: jun-11.  Copyright © l'Institut Pascal 2001 - 2011  
Retour:    Home  Les Formations  Dates  Inscription  Développement Delphi  Plan du Site  Contacts
Formation à l'Institut Pascal

Formations DELPHI
à l'Institut Pascal

+ Home
  + initiations_delphi
  + bases_de_données
  + prog_conception_objet
  + delphi_dot_net
  + internet_sockets
  + perfectionnement_delphi
  + formations_pascal
  – mise_à_niveau
  – formations_sur_mesure
  – dates
  + inscriptions
  – références
  – style_des_formations
  – choix_d_une_formation
  – toutes_les_formations
  – lettre_d_information
  + transparents
    – lecteur_de_transparent
  + developpement_delphi
  – quiz_delphi
Contacts
Plan du Site
– chercher :

RSS feed  
Blog