|
Tutoriaux
- Graphique - Scanline |
La fonction scanline permet d'accéder à chaque ligne de
pixels. Contrairement à la fonction pixels, scanline travaille
par ligne de pixels et non pixels par pixels. L'avantage de ce procéder
est le gain de temps.
Cette fonction s'utilise avec un Bitmap.
Tout d'abord il faut inclure dans votre source ce
code qui nous permettra de réaliser l'effef grisatre :
unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs;
type
TRGBArray = ARRAY[0..32767] of TRGBTriple;
pRGBArray = ^TRGBArray; |
|
Effet grisâtre sur une image |
Nous avons besoin d'un composant
TImage et TButton.
Puis, insérez une image en couleur dans le composant. Nous
utiliserons un bitmap pour travailler avec la fonction scanline.
procedure
TForm1.Button1Click(Sender: TObject);
var i, j, Col : Integer;
pb : pRGBArray;
bmp:TBitmap;
begin
Screen.Cursor := crHourGlass;
bmp:=TBitmap.Create;
bmp.Assign(Image1.Picture.Bitmap);
for j:=0 to bmp.Height-1 do
begin
pb := bmp.ScanLine[j];
for i:=0 to bmp.Width-1 do
begin
Col := Round(pb[i].rgbtRed * 0.3 + pb[i].rgbtGreen * 0.59
+ pb[i].rgbtBlue * 0.11);
pb[i].rgbtRed := Col;
pb[i].rgbtGreen := Col;
pb[i].rgbtBlue := Col;
end;
end;
Image1.Picture.Assign(bmp);
bmp.Free;
Screen.Cursor := crDefault;
end;
|
|
Effet grisatre avec scanline |
[ 02-10-2001 ] |
Effet
grisâtre utilisant la fonction scanline dans une image.
Télécharger : [6
Ko] [
scanline.zip]
Auteur : Yoann
Site internet : http://delphipage.free.fr/
|
|
|