PDA

Ver la Versión Completa : Dibujar Cuadricula


Drake
05-03-2007, 21:49:21
Hola gente toy liao con un problema y es que no se exactamente como hacer que con Canvas en un componente TImage dibuje una cuadricula de 32x32 y la cuadricula sea mayor o menor dependiendo del tamaño del componente por ejemplo:

http://ciberia.ya.com/AdvanceMaker/001.GIF
http://ciberia.ya.com/AdvanceMaker/002.GIF

Solo con hacer click haga algo como lo mostrado en las imagenes, todo esto en Delphi

seoane
08-03-2007, 17:18:47
Lo malo de lo que pides es que al dibujar sobre un componente TImage vació, este automáticamente crea un bitmap para contener la imagen. Así que al cambiar el tamaño del TImage, el Bitmap no se ajustaría al nuevo tamaño.

Quizá si explicaras un poco mejor lo que quieres hacer, puede que lo que necesitases no sea un TImage si no un TPaintbox, o que exista alguna otra solución mas adecuada.

basti
08-03-2007, 18:51:00
Podrías crear un componente que herede de TImage. Luego sobreescribir el método Paint, ahí harías la cuadrícula basándote en el ancho y alto del componente.

Drake
11-03-2007, 00:45:40
aki os dejo un ejemplo de lo k kiero hacer, como vereis se crean los cuadros en vertical pero cuando lo hace en horizontal sobreescriben a los otros, como podría hacer para k no se comiese las lineas verticales
http://ciberia.ya.com/AdvanceMaker/Project1.rar

seoane
11-03-2007, 00:56:04
No puedo abrir el archivo.

Drake
11-03-2007, 12:00:36
perdonad eske el ya.com este no vale pa na prueba a descargar aki:
http://www.megaupload.com/?d=10LKGVX0

seoane
17-03-2007, 15:28:09
Espero que no sea demasiado tarde :o


var
i: Integer;
begin
with Image1 do
begin
// La siguiente linea fuerza la creacion de un nuevo Bitmap
Picture.Assign(nil);
for i:= 1 to Width div 32 do
begin
Canvas.MoveTo(32*i,0);
Canvas.LineTo(32*i,Height);
end;
for i:= 1 to Width div 32 do
begin
Canvas.MoveTo(0,32*i);
Canvas.LineTo(Width,32*i);
end;
end;
end;

Drake
17-03-2007, 17:31:23
thanks me ha venido bastante bien.

oregon
22-03-2007, 15:15:11
Perdonad que continúe este hilo...

Lo que yo quiero hacer es una cuadrícula por encima de una imagen. Me explico. Trabajo con imágenes de satélite, y me interesaría poder dibujar una cuadrícula de coordenadas por encima de la imagen, y que el usuario pudiese poner y quitar, e incluso seleccionar el espaciado.
Como todavía no me he metido con la georeferenciación de las imágenes. Me vale con que haga una maya a un determinado número de píxeles, por ejemplo, cada 50, 100 o 200 (son valores al azar, no me he planteado aún el caso práctico).
¿Sería posible?

Gracias...

seoane
22-03-2007, 15:20:35
No veo ningún problema en hacerlo con el código que puse un poco mas arriba. Solo hay que acordarse de quitar la instrucción que fuerza la creación de un nuevo bitmap, y asegurarse de que la imagen cargada en el TImage es un bitmap, ya que no se puede dibujar sobre un jpeg o un wmf, si necesitas dibujar sobre una imagen de ese tipo primero tienes que convertirlo a bmp.