Sign in Join
Wiki copytemporary

BGRABitmap tutorial 1/es: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11Esta tutoría muestra como usar la librería [[BGRABitmap]].
22
33### Crear un nuevo proyecto
44
55Crea una aplicación gráfica con el menú **Proyecto \> Nuevo proyecto**.
66
77La unidad principal debería verse como esto :
88
99``` pascal
1010unit UMain;
1111
1212{$mode objfpc}{$H+}
1313
1414interface
1515
1616uses
1717 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs;
1818
1919type
2020
2121 { TForm1 }
2222
2323 TForm1 = class(TForm)
2424 private
2525 { private declarations }
2626 public
2727 { public declarations }
2828 end;
2929
3030var
3131 Form1: TForm1;
3232
3333implementation
3434
3535initialization
3636 {$I UMain.lrs}
3737
3838end.
3939```
4040
4141Si no la encuentras usa **Ctrl-F12** para mostrar la lista de archivos.
4242
4343Guarda tu proyecto en una carpeta siguiente a la librería BGRABitmap con el menú **Archivo \> Guardar todo** (no necesariamente en la misma carpeta).
4444
4545### Agrega referencia a BGRABitmap
4646
4747En la unidad añade referencia a BGRABitmap y a BGRABitmapTypes luego de 'Dialogs'.
4848
4949``` pascal
5050uses
5151 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
5252 BGRABitmap, BGRABitmapTypes;
5353```
5454
5555Luego tienes que hacer el proyecto dependiente de las unidades de BGRABitmap. Hay dos formas.
5656
5757#### Mediante la instalación del paquete BGRABitmap
5858
5959Abre 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.
6060
6161Si 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.
6262
6363#### Añadiendo las unidades de BGRABitmap a la ruta de búsqueda
6464
6565La 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".
6666
6767Si 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.
6868
6969Si 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.
7070
7171### Agrega algunos dibujos
7272
7373Agrega 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:
7474
7575``` pascal
7676procedure TForm1.FormPaint(Sender: TObject);
7777var bmp: TBGRABitmap;
7878begin
7979 bmp := TBGRABitmap.Create(ClientWidth, ClientHeight, BGRABlack);
8080 bmp.FillRect(20, 20, 100, 40, BGRA(255,192,0), dmSet); //rellena un rectángulo naranja
8181 bmp.Draw(Canvas, 0, 0, True); //renderiza el BGRABitmap en la Forma
8282 bmp.Free; //libera la memoria
8383end;
8484```
8585
8686Como 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.
8787
8888El 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.
8989
9090Luego 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.
9191
9292No olvides liberar el objeto luego de usarlo, para evitar pérdida de memoria.
9393
9494### Código resultante
9595
9696Deberías obtener el siguiente código:
9797
9898``` pascal
9999unit UMain;
100100
101101{$mode objfpc}{$H+}
102102
103103interface
104104
105105uses
106106 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
107107 BGRABitmap, BGRABitmapTypes;
108108
109109type
110110
111111 { TForm1 }
112112
113113 TForm1 = class(TForm)
114114 procedure FormPaint(Sender: TObject);
115115 private
116116 { private declarations }
117117 public
118118 { public declarations }
119119 end;
120120
121121var
122122 Form1: TForm1;
123123
124124implementation
125125
126126{ TForm1 }
127127
128128procedure TForm1.FormPaint(Sender: TObject);
129129var bmp: TBGRABitmap;
130130begin
131131 bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,BGRABlack);
132132 bmp.FillRect(20,20,100,40,BGRA(255,192,0),dmSet);
133133 bmp.Draw(Canvas,0,0,True);
134134 bmp.Free;
135135end;
136136
137137initialization
138138 {$I UMain.lrs}
139139
140140end.
141141```
142142
143143### Ejecuta el programa
144144
145145Deberías obtener una ventana rellenada en negro con un rectángulo naranja en ella.
146146
147-<figure>
148-<img src="BGRATutorial1.png" title="BGRATutorial1.png" />
149-<figcaption>BGRATutorial1.png</figcaption>
150-</figure>
147+![](/wiki-images/e/ea/BGRATutorial1.png)
151148
152149[[BGRABitmap tutorial 2/es|Siguiente tutoría (cargar imágen)]]
153150
154151---
155152*From the Free Pascal wiki, page "BGRABitmap tutorial 1/es", as it stood on 2020-02-09 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
156153Category: Castellano
157154Category: Español

Back to history