PDA

Ver la Versión Completa : Desplazamiento dentro de un PaintBox


Gonza10
15-12-2014, 21:05:37
Hola, tengo un problema necesito hacer un desplazamiento dentro de un paintbox con un scrollbar alguien tiene idea si esto es posible? me pidieron que mi programa tenga 120 paginas, yo lo que hice fue hacer un paintbox bastante grande y necesito moverme dentro de el para ir recorriendo las diferentes paginas.:)

Otra pregunta se puede guardar el contenido de un paintbox como por ejemplo un dibujo, yo pude guardar lo que es la parte de texto solo falta guardar los dibujos.

Casimiro Notevi
15-12-2014, 21:28:55
¿120 páginas de qué? :confused:

Gonza10
16-12-2014, 03:29:44
¿120 páginas de qué? :confused:

claro, son 120 paginas en las que se puedan cargar imágenes dibujar y escribir texto.

ecfisa
16-12-2014, 04:57:39
Hola Gonza10.
claro, son 120 paginas en las que se puedan cargar imágenes dibujar y escribir texto.
En realidad, Casimiro sabe perfectamente que se puede graficar en ellas, lo que deseaba saber es de que tipo eran esas páginas.

Con esa respuesta quedamos como entonces... Pero si se trata de un sólo gráfico que has dividido en páginas de tamaño arbitrario, una opción es hacer que el Parent del TPainBox sea un TScrollBox para así usar los TScroolBar de este componente (con el detalle que tendrás que repintar el gráfico en el evento OnPaint del TPainBox).

Un ejemplo de lo que te comento:

...
implementation

var
Picture: TPicture;

procedure TForm1.FormCreate(Sender: TObject);
begin
Picture:= TPicture.Create;
Picture.LoadFromFile('Las_120_Páginas.JPG');
PaintBox1.Width := 2000; // Ancho de la página en píxels (Ej.)
PaintBox1.Height:= 16000; // Largo de las páginas en píxeles (Ej.)
PaintBox1.Canvas.Draw(0,0, Picture.Graphic);
PaintBox1.Parent:= ScrollBox1;
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
PaintBox1.Canvas.Draw(0, 0, Picture.Graphic);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Picture.Free;
end;

Si no es lo que buscas, quedamos a la espera de tu respuesta a la consulta del mensaje #2 (http://www.clubdelphi.com/foros/showpost.php?p=486675&postcount=2)

Saludos :)

Neftali [Germán.Estévez]
16-12-2014, 12:01:39
¿Cómo te mueves por esas páginas?
Tal vez podría servir (dependiendo de lo que tengas que hacer) un array de componentes, de forma que cada página sea un componente TPaintBox.

Esto tendría varias ventajas, aunque, como he dicho, dependiendo de lo que tengas que hacer, este planteamiento tal vez no sea "adecuado".

Ñuño Martínez
16-12-2014, 15:16:46
Meter 120 páginas de lo que sea en un PaintBox es un gasto de recursos innecesario, que ralentizará tanto la carga como el visionado. Lo mismo para la solución de Neftali de crear un TPaintBox por página, terminando con 120 componentes en memoria.

Lo lógico es ir manejando las páginas una a una, cargándolas y mostrándolas cuando sea necesario y "borrándolas" cuando ya no se necesiten. Además, así será mucho más sencillo y rápido "desplazarte" hasta una página concreta, sin tener que andar calculando anchos y altos para moverse hasta ella.

Gonza10
16-12-2014, 15:21:03
En primera instancia mi idea era esa de hacer un paintbox grande que me abarquen 120 paginas de tamaño 64x16, tal vez habría otra manera de hacerlo con un array pero el problema es que cuando cree una nueva me va a pisar la anterior y me borrara lo que estaba haciendo.

Les dejo lo que hice para que nos entendamos mejor. saludos

Gonza10
16-12-2014, 20:49:22
En primera instancia mi idea era esa de hacer un paintbox grande que me abarquen 120 paginas de tamaño 64x16, tal vez habría otra manera de hacerlo con un array pero el problema es que cuando cree una nueva me va a pisar la anterior y me borrara lo que estaba haciendo.

Les dejo lo que hice para que nos entendamos mejor. saludos

Lo subo de nuevo si alguien tiene problemas notifique!

https://mega.co.nz/#!ZV5XWKbL!1_tOXBHLXPVXgMX9wQm_LYxx_xEkgTseK8-GocmhttM