Difference between revisions of "BGRABitmap tutorial/fr"

From Lazarus wiki
Jump to navigationJump to search
 
(11 intermediate revisions by 3 users not shown)
Line 3: Line 3:
 
{{BGRABitmap_tutorial_index/fr}}
 
{{BGRABitmap_tutorial_index/fr}}
  
Ce premier tutoriel montre comment utiliser la bibliothèque [[BGRABitmap/fr|BGRABitmap]]. Un tutoriel est aussi disponible sur developpez.net[http://lazarus.developpez.com/cours/bgrabitmap/].
+
Bienvenue dans l'index des tutoriaux pour la bibliothèque [[BGRABitmap/fr|BGRABitmap]]. Vous pouvez parcourir les tutoriaux selon leur numéro avec la barre en haut de la page, ou bien selon les catégories suivantes :
  
=== Création d'un nouveau projet ===
+
=== Installer BGRABitmap et dessiner des formes de base ===
  
Créez une application fenêtré avec le menu '''Projet > Nouveau projet'''.
+
Les images TBGRABitmap proposent à leur racine des fonctions de dessin avec des coordonnées flottantes ou bien entières.
  
L'unité de la fenêtre principale devrait ressembler à cela :
+
* [[BGRABitmap tutorial 1/fr|Installer BGRABitmap (n°1)]]
<delphi>unit UMain;
+
* [[BGRABitmap tutorial 2/fr|Charger et afficher une image (n°2)]]
 +
* [[BGRABitmap tutorial 3/fr|Dessiner avec la souris (n°3)]]
 +
* [[BGRABitmap tutorial 6/fr|Styles de lignes (n°6)]]
 +
* [[BGRABitmap tutorial 7/fr|Splines et courbes de Bézier (n°7)]]
 +
* [[BGRABitmap tutorial 12/fr|Fonctions de texte (n°12)]]
 +
* [[BGRABitmap tutorial 13|Coordonnées entières et flottantes (n°13)]]
  
{$mode objfpc}{$H+}
+
=== Textures et scanner ===
  
interface
+
Les pixels forment un tableau en mémoire de valeurs au format TBGRAPixel. On peut à ce niveau-là effectuer diverses opérations.
  
uses
+
* [[BGRABitmap tutorial 4/fr|Accès direct aux pixels via Scanline (n°4)]]
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs;
+
* [[BGRABitmap tutorial 5/fr|Combiner différentes couches de pixels (n°5)]]
 +
* [[BGRABitmap tutorial 8/fr|Générer des textures (n°8)]]
 +
* [[BGRABitmap tutorial 9/fr|Eclairage de phong à partir de textures (n°9)]]
 +
* [[BGRABitmap tutorial 10/fr|Plaquage de texture (n°10)]]
 +
* [[BGRABitmap tutorial 11/fr|Utilisation des scanners pour combiner des transformations (n°11)]]
  
type
+
=== Autres contextes de dessin ===
  
  { TForm1 }
+
Il est possible de dessiner en utilisant d'autres contextes, afin d'avoir d'autres fonctions de dessin de base.
  
  TForm1 = class(TForm)
+
* Canvas standard (propriétés Canvas et CanvasOpacity) : utilisation à éviter à cause de la lenteur de conversion des images
  private
+
* Canvas avec améliorations apportées par BGRABitmap (propriétés CanvasBGRA, les propriétés Brush, Pen, etc. ont une propriété Opacity)
    { private declarations }
+
** [http://www.youtube.com/watch?v=HGYSLgtYx-U Comment convertir une application de TCanvas vers CanvasBGRA (vidéo)]
  public
+
* [[BGRABitmap tutorial 14|Dessiner avec un canvas 2D proposant des transformations affines]]
    { public declarations }
+
* [[BGRABitmap tutorial 15|Rendu en vraie 3D]]
  end;
+
* [[BGRABitmap tutorial 16|Utilisation de textures avec la 3D]]
  
var
+
=== Plus ===
  Form1: TForm1;
 
  
implementation
+
Vous pouvez utiliser BGRABitmap pour [[BGRABitmap_tutorial_TAChart/fr|améliorer le rendu d'un TAChart]].
  
initialization
+
Des classes supplémentaires, à instancier pour utilisation, sont également disponibles :
  {$I UMain.lrs}
 
  
end.</delphi>
+
* TBGRATextEffect, qui se trouve dans l'unité BGRATextFX, permet de préparer le dessin d'une ligne de texte, d'ajouter des effets comme un contour et de l'ombrage.
 +
* TBGRALayeredBitmap, qui se trouve dans l'unité BGRALayers, permet de gérer une image multicouche. Les unités BGRAPaintNet et BGRAOpenRaster contiennent des implémentations pour lire ou écrire au format Paint.NET (lecture seule) ou encore OpenRaster (lecture et écriture).
 +
* Les unités BGRAGradientScanner et BGRATransform contiennent des scanners afin d'effectuer divers traitements de l'image.
 +
* L'unité BGRAGradients contient des procédures pour générer des gradients et la classe TPhongShading pour l'éclairage de Phong.
 +
* La classe TBGRACompressableBitmap, dans l'unité BGRACompressableBitmap, permet de stocker et de compresser des images.
  
Si vous ne la trouvez pas, utilisez '''Ctrl-F12''' pour afficher la liste des fichiers.
+
Les autres unités contiennent des fonctions de bas niveau, et vous n'avez a priori pas besoin de les utiliser directement.
  
Sauvegarder votre projet à côté de la librairie BGRABitamp avec le menu '''Ficher > Tout enregistrer''' (pas forcément dans le même répertoire).
 
 
=== Ajout de la référence à BGRABitmap ===
 
 
Dans la clause unité, ajouter une référence à BGRABitmap et à BGRABitmapTypes après Dialogs.
 
 
<delphi>uses
 
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
 
  BGRABitmap, BGRABitmapTypes;</delphi>
 
 
Ensuite, vous devez mettre le projet au courant des unités de BGRABitmap. Il y a deux façons.
 
 
==== En installant BGRABitmap comme un package ====
 
 
Ouvrez bgrabitmappack.lpk et cliquer sur installation. Une boite de dialogue apparait, demandant si le package 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 ====
 
 
La deuxième 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 perdus 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. Après, 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 :
 
<delphi>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;</delphi>
 
 
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 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 :
 
<delphi>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.</delphi>
 
 
=== Exécution du programme ===
 
 
Vous devriez obtenir une fenêtre remplie de noir avec un rectangle orange dedans.
 
 
[[Image:BGRATutorial1.png]]
 
 
[[BGRABitmap tutorial 2/fr|Tutoriel suivant (chargement d'image)]]
 
  
 
[[Category:Graphics/fr]]
 
[[Category:Graphics/fr]]
 +
[[Category:Tutorials/fr]]

Latest revision as of 21:49, 15 May 2015

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

Bienvenue dans l'index des tutoriaux pour la bibliothèque BGRABitmap. Vous pouvez parcourir les tutoriaux selon leur numéro avec la barre en haut de la page, ou bien selon les catégories suivantes :

Installer BGRABitmap et dessiner des formes de base

Les images TBGRABitmap proposent à leur racine des fonctions de dessin avec des coordonnées flottantes ou bien entières.

Textures et scanner

Les pixels forment un tableau en mémoire de valeurs au format TBGRAPixel. On peut à ce niveau-là effectuer diverses opérations.

Autres contextes de dessin

Il est possible de dessiner en utilisant d'autres contextes, afin d'avoir d'autres fonctions de dessin de base.

Plus

Vous pouvez utiliser BGRABitmap pour améliorer le rendu d'un TAChart.

Des classes supplémentaires, à instancier pour utilisation, sont également disponibles :

  • TBGRATextEffect, qui se trouve dans l'unité BGRATextFX, permet de préparer le dessin d'une ligne de texte, d'ajouter des effets comme un contour et de l'ombrage.
  • TBGRALayeredBitmap, qui se trouve dans l'unité BGRALayers, permet de gérer une image multicouche. Les unités BGRAPaintNet et BGRAOpenRaster contiennent des implémentations pour lire ou écrire au format Paint.NET (lecture seule) ou encore OpenRaster (lecture et écriture).
  • Les unités BGRAGradientScanner et BGRATransform contiennent des scanners afin d'effectuer divers traitements de l'image.
  • L'unité BGRAGradients contient des procédures pour générer des gradients et la classe TPhongShading pour l'éclairage de Phong.
  • La classe TBGRACompressableBitmap, dans l'unité BGRACompressableBitmap, permet de stocker et de compresser des images.

Les autres unités contiennent des fonctions de bas niveau, et vous n'avez a priori pas besoin de les utiliser directement.