BGRABitmap tutorial 1/fr

From Free Pascal wiki
Revision as of 09:19, 9 February 2020 by Trev (talk | contribs) (Fixed syntax highlighting; deleted category already in page template)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Deutsch (de) English (en) español (es) français (fr) русский (ru)


Accueil | Tutoriel 1 | Tutoriel 2 | Tutoriel 3 | Tutoriel 4 | Tutoriel 5 | Tutoriel 6 | Tutoriel 7 | Tutoriel 8 | Tutoriel 9 | Tutoriel 10 | Tutoriel 11 | Tutoriel 12 | Edit

Ce premier tutoriel montre comment utiliser la bibliothèque BGRABitmap. Un tutoriel est aussi disponible sur developpez.net[1].

Création d'un nouveau projet

Créez une application fenêtrée avec le menu Projet > Nouveau projet.

L'unité de la fenêtre principale devrait ressembler à cela :

unit UMain;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs;

type

  { TForm1 }

  TForm1 = class(TForm)
  private
    { private declarations }
  public
    { public declarations }
  end; 

var
  Form1: TForm1; 

implementation

initialization
  {$I UMain.lrs}

end.

Si vous ne la trouvez pas, utilisez Ctrl-F12 pour afficher la liste des fichiers.

Sauvegardez votre projet à côté de la librairie BGRABitamp avec le menu Fichier > Tout enregistrer (pas forcément dans le même répertoire).

Ajout de la référence à BGRABitmap

La première fois que vous utilisez BGRABitmap, ouvrez bgrabitmappack.lpk avec Lazarus et cliquez dans la fenêtre de paquet "Utiliser > Ajouter au projet". Ensuite, si vous avez besoin d'ajouter la référence à un autre projet, vous pouvez le faire via l'inspecteur de projet en cliquant "Ajouter... > Nouvelle condition" et en choissant BGRABitmapPack.

Dans la clause unité, ajoutez une référence à BGRABitmap et à BGRABitmapTypes après Dialogs.

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  BGRABitmap, BGRABitmapTypes;

Ensuite, vous devez mettre le projet au courant des unités de BGRABitmap. Il y a deux façons de le faire qui sont décrites ci-après.

Alternatives pour ajouter la référence

En installant BGRABitmap comme un paquet

Ouvrez bgrabitmappack.lpk. Assurez vous que le paquet peut etre installé en allant dans la fenêtre de paquet et dans "Options > Intégration" et en changeant le type de paquet en "Conception et exécution". Enfin, dans la fenêtre de paquet, cliquez sur installation. Une boîte de dialogue apparait, demandant si le paquet doit être ajouté à Lazarus et si Lazarus doit être recompilé. Choisissez "Oui" deux fois.

Si tout se passe bien, Lazarus redémarre et les unités de BGRABitmap sont disponibles. Si cela ne marche pas, vous pouvez simplement ajouter BGRABitmap au chemin de recherche sans avoir besoin de recompiler Lazarus.

En ajoutant BGRABitmap au chemin de recherche

Une autre façon est d'ajouter les unités de BGRABitmap au chemin de recherche du projet (-Fu). Pour cela, allez dans les options du compilateur avec le menu Projet > Options du compilateur. Dans "autres fichiers unité", ajoutez le chemin relatif à BGRABitmap. Par exemple, si BGRABitmap est dans un dossier à côté du votre projet, le chemin relatif pourrait être : "..\BGRABitmap".

Si vous copiez les fichiers de BGRABitmap dans le même dossier que le projet, vous n'avez pas besoin d'ajouter un tel chemin de recherche. Cependant, cela n'est pas recommandé parce que si vous avez plusieurs projets utilisant la bibliothèque, cela devient une tâche répétitive de mettre à jour une nouvelle version de la bibliothèque.

Si vous êtes perdu avec les chemins relatifs, vous pouvez aussi ajouter ce chemin en ajoutant l'unité BGRABitmap à votre projet. Pour faire cela, ouvrez à l'intérieur de votre projet le fichier bgrabitmap.pas. Ensuite, utilisez le menu Projet > Ajouter le fichier au projet. Lazarus demandera si vous voulez ajouter le fichier et le nouveau répertoire au projet.

Un premier dessin

Ajoutez un événement de dessin. Pour cela, cliquez une fois sur la fenêtre. Ensuite allez dans l'inspecteur d'objet, dans l'onglet Événements, et double-cliquez sur la ligne OnPaint. Lazarus ajoutera automatiquement un gestionnaire FormPaint à l'unité de la fenêtre principale. Ajoutez par exemple le code suivant à l'intérieur du gestionnaire ainsi créé :

procedure TForm1.FormPaint(Sender: TObject);
var bmp: TBGRABitmap;
begin
  bmp := TBGRABitmap.Create(ClientWidth, ClientHeight, BGRABlack);
  bmp.FillRect(20, 20, 100, 40, BGRA(255,192,0), dmSet);  //remplit un rectangle orange
  bmp.Draw(Canvas, 0, 0, True);                           //affiche la BGRABitmap sur la fenêtre
  bmp.Free;                                               //libère la mémoire
end;

Comme vous pouvez le voir, vous avez besoin de définir une variable TBGRABitmap et de la créer. Il y a plusieurs constructeurs différents. Celui utilisé ici crée une image de taille ClientWidth x ClientHeight et la remplit avec du noir. ClientWidth et ClientHeight sont des propriétés de la fenêtre qui renvoient la place disponible pour dessiner à l'intérieur de la fenêtre.

La procédure FillRect prend les paramètres usuels pour dessiner un rectangle, c'est-à-dire le coin haut-gauche suivi par le coin bas-droite plus 1. Cela veut dire que le pixel à (100,40) est exclu du rectangle.

Après cela, il y a le paramètre de couleur avec les composantes rouge/vert/bleu, et le mode de dessin. dmSet signifie de simplement remplacer les pixels.

N'oubliez pas de libérer l'objet après utilisation pour éviter les fuites de mémoire.

Code résultant

Vous devriez obtenir le code suivant :

unit UMain;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  BGRABitmap, BGRABitmapTypes;

type

  { TForm1 }

  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 

var
  Form1: TForm1; 

implementation

{ TForm1 }

procedure TForm1.FormPaint(Sender: TObject);
var bmp: TBGRABitmap;
begin
  bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,BGRABlack);
  bmp.FillRect(20,20,100,40,BGRA(255,192,0),dmSet);
  bmp.Draw(Canvas,0,0,True);
  bmp.Free;
end;

initialization
  {$I UMain.lrs}

end.

Exécution du programme

Vous devriez obtenir une fenêtre remplie de noir avec un rectangle orange à l'intérieur.

BGRATutorial1.png

Tutoriel suivant (chargement d'image)