• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..08-Dec-2020-

LICENSEH A D08-Dec-202017.6 KiB340281

README.mdH A D08-Dec-20203.1 KiB7755

ogControls.pasH A D03-May-202213.2 KiB416351

ogDefObjGraf.pasH A D03-May-202241 KiB1,124888

ogEditionMot.pasH A D03-May-202244 KiB1,209854

ogMotGraf2D.pasH A D03-May-202232.3 KiB883438

README.md

1ogEditGraf 2.5
2==============
3
4Librería en Lazarus, para la creación de editores simples de objetos gráficos.
5
6![SynFacilCompletion](http://blog.pucp.edu.pe/blog/tito/wp-content/uploads/sites/610/2018/04/Sin-título-12.png "Título de la imagen")
7
8Esta librería permite implementar fácilmente un editor de objetos gráficos en dos dimensiones. Los objetos gráficos se crean a partir de una clase base, que incluye las funciones básicas para poder ser manipulados por un editor, con opciones de seleccionar, mover, y redimensionar los objetos.
9
10Se compone de las unidades:
11
12* ogMotGraf2d.pas -> Es el motor gráfico, en donde se encuentran las rutinas de dibujo. Usa métodos comunes del lienzo (Canvas), pero puede ser cambiado para usar alguna otra librería gráfica.
13* ogDefObjGraf.pas -> Es donde se define la clase TObjGraf, que es la clase que se usa para crear a todos los objetos gráficos de nuestra aplicación. También se definen algunos objetos accesorios.
14* ogEditionMot.pas -> Es el motor de edición de objetos gráficos. Esta diseñado para trabajar con los objetos TObjGraf o descendientes. Incluye las rutinas para seleccionar, mover y redimensionar objetos con el ratón.
15* ogControls.pas -> Unidad que define objetos gráficos que funcionan al estilo de los controles de una GUI típica. También define a la clase TObjGrafCtrls, descendiente de TObjGraf que puede incluir controles.
16
17Para implementar un sencillo editor de objetos gráficos, se puede incluir el siguiente código en el formulario principal:
18
19```
20unit Unit1;
21{$mode objfpc}{$H+}
22interface
23uses
24  Classes, Forms, Controls, Graphics, ExtCtrls, ogEditionMot, ogDefObjGraf;
25
26type
27  //define el tipo de objeto a dibujar
28  TMiObjeto = class(TObjGraf)
29    procedure Draw; override;
30  end;
31
32  TForm1 = class(TForm)
33    PaintBox1: TPaintBox;   //donde se dibujará
34    procedure FormCreate(Sender: TObject);
35  private
36    motEdi: TEditionMot;  //motor de edición
37  end;
38
39var
40  Form1: TForm1;
41
42implementation
43{$R *.lfm}
44
45procedure TMiObjeto.Draw();
46begin
47  v2d.SetPen(psSolid, 1, clBlack);
48  v2d.RectangR(x, y, x+width, y+height);
49  inherited;
50end;
51
52procedure TForm1.FormCreate(Sender: TObject);
53var og: TMiObjeto;
54begin
55  //Crea motor de edición
56  motEdi := TEditionMot.Create(PaintBox1);
57  //Agrega objeto
58  og := TMiObjeto.Create(motEdi.v2d);
59  motEdi.AddGraphObject(og);
60end;
61
62end.
63```
64
65Este ejemplo mostrará un objeto rectangular en pantalla, con posibilidad de desplazarlo y dimensionarlo.
66
67Las rutinas de dibujo, se dirigen siempre, a un control PaintBox, que debe ser indicado al momento de crear el motor de edición.
68
69Este sencillo ejemplo solo requiere incluir un control TPaintBox en el formulario principal. Sin embargo, para modularizar mejor la aplicación, se sugiere usar una unidad especial para definir los objetos gráficos de nuestra aplicación, y un frame para incluir el PaintBox y las rutinas de trabajo del motor de edición.
70
71== Arquitectura de los proyectos ===
72
73Las unidades de la librería siguen una organización particular, que determina también la arquitectura de la aplicación.
74
75
76Para más información, revisar los ejemplos.
77