Difference between revisions of "BGRABitmap tutorial 2/fr"
m (→Centrer l'image: trad commentaire) |
m (ortograf) |
||
Line 3: | Line 3: | ||
{{BGRABitmap_tutorial_index/fr}} | {{BGRABitmap_tutorial_index/fr}} | ||
− | Ce | + | Ce tutoriel montre comment charger une image et la dessiner sur la fenêtre. |
=== Création d'un nouveau projet === | === Création d'un nouveau projet === | ||
− | Créez un nouveau projet et ajouter la référence à [[BGRABitmap]], de la même façon que dans [[BGRABitmap tutorial/fr|le premier | + | Créez un nouveau projet et ajouter la référence à [[BGRABitmap]], de la même façon que dans [[BGRABitmap tutorial/fr|le premier tutoriel]]. |
=== Chargement de l'image === | === Chargement de l'image === | ||
Line 36: | Line 36: | ||
end; </delphi> | end; </delphi> | ||
− | Remarquez que le dernier paramètre est à vrai, ce qui signifie opaque. Si vous voulez prendre en compte les pixels transparents, encodés dans le | + | Remarquez que le dernier paramètre est à vrai, ce qui signifie opaque. Si vous voulez prendre en compte les pixels transparents, encodés dans le canal alpha, vous devez mettre False à la place. Mais cela peut être lent de dessiner avec transparence sur un Canvas standard, alors si ce n'est pas nécessaire, utilisez le dessin opaque seulement. |
=== Code === | === Code === | ||
Line 114: | Line 114: | ||
Vous pouvez lancer le programme et voir si cela marche. Notez ce qu'il se passe si vous enlevez le test pour la position négative. | Vous pouvez lancer le programme et voir si cela marche. Notez ce qu'il se passe si vous enlevez le test pour la position négative. | ||
− | === | + | === Étirer une image === |
Pour étirer une image, nous avons besoin de créer une image temporaire étirée : | Pour étirer une image, nous avons besoin de créer une image temporaire étirée : | ||
Line 125: | Line 125: | ||
end;</delphi> | end;</delphi> | ||
− | Par défaut, Resample utilise un joli | + | Par défaut, Resample utilise un joli rééchantillonnage, mais vous pouvez préciser si vous voulez un rééchantillonnage simple à la place (plus rapide) : |
<delphi>stretched := image.Resample(ClientWidth, ClientHeight, rmSimpleStretch) as TBGRABitmap;</delphi> | <delphi>stretched := image.Resample(ClientWidth, ClientHeight, rmSimpleStretch) as TBGRABitmap;</delphi> | ||
− | [[BGRABitmap tutorial/fr|Premier | + | [[BGRABitmap tutorial/fr|Premier tutoriel]] | [[BGRABitmap tutorial 3/fr|Tutoriel suivant (dessiner avec la souris)]] |
[[Category:Graphics]] | [[Category:Graphics]] |
Revision as of 17:04, 4 April 2011
│ 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 tutoriel montre comment charger une image et la dessiner sur la fenêtre.
Création d'un nouveau projet
Créez un nouveau projet et ajouter la référence à BGRABitmap, de la même façon que dans le premier tutoriel.
Chargement de l'image
Copiez une image dans le répertoire du projet. Supposons que son nom est image.png.
Ajoutez une variable privée à la fenêtre principale pour stocker l'image : <delphi> TForm1 = class(TForm)
private { private declarations } image: TBGRABitmap; public { public declarations } end; </delphi>
Programmez le chargement de l'image quand la fenêtre est créée. Pour faire cela, double-cliquez sur la fenêtre. Une procédure devrait apparaitre dans l'éditeur de code. Ajoutez-y l'instruction de chargement : <delphi>procedure TForm1.FormCreate(Sender: TObject); begin
image := TBGRABitmap.Create('image.png');
end; </delphi>
Dessiner l'image
Ajouter un gestionnaire OnPaint. Pour cela, cliquez sur la fenêtre, allez dans l'inspecteur d'objet, dans l'onglet événement et double-cliquez sur la ligne OnPaint. Ensuite, ajoutez le code suivant : <delphi>procedure TForm1.FormPaint(Sender: TObject); begin
image.Draw(Canvas,0,0,True);
end; </delphi>
Remarquez que le dernier paramètre est à vrai, ce qui signifie opaque. Si vous voulez prendre en compte les pixels transparents, encodés dans le canal alpha, vous devez mettre False à la place. Mais cela peut être lent de dessiner avec transparence sur un Canvas standard, alors si ce n'est pas nécessaire, utilisez le dessin opaque seulement.
Code
Finalement, vous devriez avoir quelque chose comme cela : <delphi>unit UMain;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, BGRABitmap, BGRABitmapTypes;
type
{ TForm1 }
TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormPaint(Sender: TObject); private { private declarations } image: TBGRABitmap; public { public declarations } end;
var
Form1: TForm1;
implementation
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject); begin
image := TBGRABitmap.Create('image.png');
end;
procedure TForm1.FormPaint(Sender: TObject); begin
image.Draw(Canvas,0,0,True);
end;
initialization
{$I UMain.lrs}
end.</delphi>
Exécution du programme
Vous devriez voir une fenêtre avec une image dessinée dedans au coin supérieur gauche.
Centrer l'image
Vous pouvez centrer l'image sur la fenêtre. Pour cela, modifiez la procédure FormPaint : <delphi>procedure TForm1.FormPaint(Sender: TObject); var ImagePos: TPoint; begin
ImagePos := Point( (ClientWidth - Image.Width) div 2, (ClientHeight - Image.Height) div 2 );
// test si la position est négative if ImagePos.X < 0 then ImagePos.X := 0; if ImagePos.Y < 0 then ImagePos.Y := 0;
image.Draw(Canvas,ImagePos.X,ImagePos.Y,True);
end;</delphi>
Pour calculer la position, nous avons besoin de déterminer l'espace entre l'image et le bord gauche (coordonnée X) et l'espace entre l'image et le bord haut (coordonnée Y). L'expression ClientWidth - Image.Width renvoie l'espace horizontal disponible, et on divise par 2 pour obtenir la marge gauche.
Le résultat peut être négatif si l'image est plus grande que la largeur cliente. Dans ce cas, la marge est mise à zéro.
Vous pouvez lancer le programme et voir si cela marche. Notez ce qu'il se passe si vous enlevez le test pour la position négative.
Étirer une image
Pour étirer une image, nous avons besoin de créer une image temporaire étirée : <delphi>procedure TForm1.FormPaint(Sender: TObject); var stretched: TBGRABitmap; begin
stretched := image.Resample(ClientWidth, ClientHeight) as TBGRABitmap; stretched.Draw(Canvas,0,0,True); stretched.Free;
end;</delphi>
Par défaut, Resample utilise un joli rééchantillonnage, mais vous pouvez préciser si vous voulez un rééchantillonnage simple à la place (plus rapide) : <delphi>stretched := image.Resample(ClientWidth, ClientHeight, rmSimpleStretch) as TBGRABitmap;</delphi>
Premier tutoriel | Tutoriel suivant (dessiner avec la souris)