Gràfics en Lazarus (FPK) – TImage

Ací pose un exemple simple de com fer sota Lazarus un programa mínim que consisteix en una finestra form que conté una àrea de llenç per dibuixar (canvas), i un parell de botons (un per sortir del programa i un altre que dibuixa una línia -píxel a píxel- , un parell de rectangles…). El codi està simplificat al màxim per poder-lo reproduir fàcilment.

Adaptar un programa fet a Turbo Pascal o TPW pot resultar una mica confús al principi de treballar en un entorn de l’estil de Lazarus en què cada objecte té un munt de propietats i procediments jeràrquics que acaben per confondre el programador respecte on fer valdre cadascun dels procediments emprats. L’exemple és:

unit Unit1;
  {$mode objfpc}
 {$H+} 
interface 
uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, 
        ExtCtrls, Buttons; 
type { TForm1 }
    TForm1 = class(TForm) BitBtn1: TBitBtn;   
    Button1: TButton;  
    Image1: TImage; 
    procedure BitBtn1Click(Sender: TObject); 
    procedure Button1Click(Sender: TObject);  
    procedure FormCreate(Sender: TObject);   
    procedure Image1Click(Sender: TObject);  
 private   public 
end; 
   var Form1: TForm1;
implementation
 {$R *.lfm} 
{ TForm1 } 
procedure TForm1.Button1Click(Sender: TObject); // En apretar el "button1" ...   
 var i:integer;
 begin   
      image1.canvas.clear; // Esborrem el text posat en el canvas.   
      with Image1.Canvas do begin // Accedim tipus bulk a la jerarquia.   
      Brush.Color:=clblue; // Seleccionem color blau. 
      FillRect(0,0,100,100); // Fem una superfície rectangular blava. 
end; 
    image1.Canvas.pen.color:=clgreen; // Seleccionem color verd. (Accedim directament). 
    image1.Canvas.rectangle(1,1,40,40); // Incloem un rectangle verd. 
    for i:=0 to image1.canvas.height do begin
          image1.Canvas.Pixels[i,i]:=clred; // Fem una línia diagonal.
    end;
 end;

 procedure TForm1.BitBtn1Click(Sender: TObject); 
begin halt(0); end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    image1.Canvas.TextOut(25,70,' Prem el Button1 per a dibuixar '); 
end; 

procedure TForm1.Image1Click(Sender: TObject); begin end; end.

Pots baixar-te un directori de projecte en Lazarus ací:

Exemple1 (pascal timage) (5 downloads)

Fonts, ampliacions i informacions complementàries: