BGRABitmap tutorial 1/es

From Free Pascal wiki
Jump to navigationJump to search

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


Home | Tutorial 1 | Tutorial 2 | Tutorial 3 | Tutorial 4 | Tutorial 5 | Tutorial 6 | Tutorial 7 | Tutorial 8 | Tutorial 9 | Tutorial 10 | Tutorial 11 | Tutorial 12 | Edit

Esta tutoría muestra como usar la librería BGRABitmap.

Crear un nuevo proyecto

Crea una aplicación gráfica con el menú Proyecto > Nuevo proyecto.

La unidad principal debería verse como esto :

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 no la encuentras usa Ctrl-F12 para mostrar la lista de archivos.

Guarda tu proyecto en una carpeta siguiente a la librería BGRABitmap con el menú Archivo > Guardar todo (no necesariamente en la misma carpeta).

Agrega referencia a BGRABitmap

En la unidad añade referencia a BGRABitmap y a BGRABitmapTypes luego de 'Dialogs'.

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

Luego tienes que hacer el proyecto dependiente de las unidades de BGRABitmap. Hay dos formas.

Mediante la instalación del paquete BGRABitmap

Abre bgrabitmappack.lpk y haz clic en instalar. Un dialogo se muestra preguntando si el paquete debe ser agregado a Lazarus y si es necesario compilarlo nuevamente. Elije Si dos veces.

Si todo sale bien, Lazarus se reinicia y las unidades de BGRABitmap están disponibles. Si esto no funciona, puedes simplemente añadir BGRABitmap a la ruta de búsqueda sin tener que compilar Lazarus.

Añadiendo las unidades de BGRABitmap a la ruta de búsqueda

La otra forma es agregar las unidades de BGRABitmap a la ruta de búsqueda del proyecto. Para hacer esto, ve a las opciones del compilador con el menú Proyecto > Opciones del proyecto. En Opciones del Compilador > Rutas > Otros archivos de unidad agrega BGRABitmap. Por ejemplo, si BGRABitmap esta en una carpeta siguiente a tu proyecto, la ruta relativa puede ser "..\BGRABitmap".

Si copias los archivos de BGRABitmap en la misma carpeta de tu proyecto, entonces no necesitas agregar esa ruta de busqueda. Pero no es recomendado porque si tienes multiples proyectos usando la librería puede volverse repetitiva la tarea de actualizar la nueva versión de la librería.

Si estás perdido con la ruta relativa, puedes también agregar la ruta relativa añadiendo la unidad BGRABitmap en tu proyecto. Para hacer eso, abre con tu proyecto el archivo bgrabitmap.pas. Luego usa el menú Proyecto > Añadir archivo al proyecto. Lazarus preguntará si quieres agregar el archivo al proyecto y al nuevo directorio al proyecto.

Agrega algunos dibujos

Agrega un evento de pintado. Para hacer esto haz clic en la Forma (Form) luego ve al inspector de objetos, en la pestaña de eventos haz doble clic en el evento OnPaint. Lazarus agregará automáticamente un manejador FormPaint a la unidad principal. Agrega por ejemplo el siguiente código dentro:

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);  //rellena un rectángulo naranja
  bmp.Draw(Canvas, 0, 0, True);                           //renderiza el BGRABitmap en la Forma
  bmp.Free;                                               //libera la memoria
end;

Como puedes ver, necesitas definir una variable TBGRABitmap y crearla. Hay diferentes constructores para TBGRABitmap. El primero usado aquí crea un bitmap de tamaño ClientWidth x ClientHeiht rellenado con negro. ClientWidth y ClientHeight son propiedades de forma que regresan el espacio disponible para dibujar dentro de la forma.

El procedimiento FillRect toma parametros similares para dibujar un rectángulo, esto es la esquina superior-izquierda seguido por la esquina inferior-derecha mas 1. Esto significa que el pixel a (100,40) es excluido del rectángulo.

Luego de eso, hay un parámetro color con componentes rojo/verde/azul y un modo de dibujo. dmSet significa que simplemente reemplaza los píxeles.

No olvides liberar el objeto luego de usarlo, para evitar pérdida de memoria.

Código resultante

Deberías obtener el siguiente código:

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.

Ejecuta el programa

Deberías obtener una ventana rellenada en negro con un rectángulo naranja en ella.

BGRATutorial1.png

Siguiente tutoría (cargar imágen)