Sign in Join
Wiki copytemporary

BGRABitmap tutorial 1/es: what changed

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

Title: BGRABitmap tutorial 1/es

OldNewLine
1+Esta tutoría muestra como usar la librería [[BGRABitmap]].
2+
3+### Crear un nuevo proyecto
4+
5+Crea una aplicación gráfica con el menú **Proyecto \> Nuevo proyecto**.
6+
7+La unidad principal debería verse como esto :
8+
9+``` pascal
10+unit UMain;
11+
12+{$mode objfpc}{$H+}
13+
14+interface
15+
16+uses
17+ Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs;
18+
19+type
20+
21+ { TForm1 }
22+
23+ TForm1 = class(TForm)
24+ private
25+ { private declarations }
26+ public
27+ { public declarations }
28+ end;
29+
30+var
31+ Form1: TForm1;
32+
33+implementation
34+
35+initialization
36+ {$I UMain.lrs}
37+
38+end.
39+```
40+
41+Si no la encuentras usa **Ctrl-F12** para mostrar la lista de archivos.
42+
43+Guarda tu proyecto en una carpeta siguiente a la librería BGRABitmap con el menú **Archivo \> Guardar todo** (no necesariamente en la misma carpeta).
44+
45+### Agrega referencia a BGRABitmap
46+
47+En la unidad añade referencia a BGRABitmap y a BGRABitmapTypes luego de 'Dialogs'.
48+
49+``` pascal
50+uses
51+ Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
52+ BGRABitmap, BGRABitmapTypes;
53+```
54+
55+Luego tienes que hacer el proyecto dependiente de las unidades de BGRABitmap. Hay dos formas.
56+
57+#### Mediante la instalación del paquete BGRABitmap
58+
59+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.
60+
61+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.
62+
63+#### Añadiendo las unidades de BGRABitmap a la ruta de búsqueda
64+
65+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".
66+
67+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.
68+
69+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.
70+
71+### Agrega algunos dibujos
72+
73+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:
74+
75+``` pascal
76+procedure TForm1.FormPaint(Sender: TObject);
77+var bmp: TBGRABitmap;
78+begin
79+ bmp := TBGRABitmap.Create(ClientWidth, ClientHeight, BGRABlack);
80+ bmp.FillRect(20, 20, 100, 40, BGRA(255,192,0), dmSet); //rellena un rectángulo naranja
81+ bmp.Draw(Canvas, 0, 0, True); //renderiza el BGRABitmap en la Forma
82+ bmp.Free; //libera la memoria
83+end;
84+```
85+
86+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.
87+
88+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.
89+
90+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.
91+
92+No olvides liberar el objeto luego de usarlo, para evitar pérdida de memoria.
93+
94+### Código resultante
95+
96+Deberías obtener el siguiente código:
97+
98+``` pascal
99+unit UMain;
100+
101+{$mode objfpc}{$H+}
102+
103+interface
104+
105+uses
106+ Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
107+ BGRABitmap, BGRABitmapTypes;
108+
109+type
110+
111+ { TForm1 }
112+
113+ TForm1 = class(TForm)
114+ procedure FormPaint(Sender: TObject);
115+ private
116+ { private declarations }
117+ public
118+ { public declarations }
119+ end;
120+
121+var
122+ Form1: TForm1;
123+
124+implementation
125+
126+{ TForm1 }
127+
128+procedure TForm1.FormPaint(Sender: TObject);
129+var bmp: TBGRABitmap;
130+begin
131+ bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,BGRABlack);
132+ bmp.FillRect(20,20,100,40,BGRA(255,192,0),dmSet);
133+ bmp.Draw(Canvas,0,0,True);
134+ bmp.Free;
135+end;
136+
137+initialization
138+ {$I UMain.lrs}
139+
140+end.
141+```
142+
143+### Ejecuta el programa
144+
145+Deberías obtener una ventana rellenada en negro con un rectángulo naranja en ella.
146+
147+<figure>
148+<img src="BGRATutorial1.png" title="BGRATutorial1.png" />
149+<figcaption>BGRATutorial1.png</figcaption>
150+</figure>
151+
152+[[BGRABitmap tutorial 2/es|Siguiente tutoría (cargar imágen)]]
153+
154+---
155+*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).*
156+Category: Castellano
157+Category: Español

Back to history