Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Dibujar Cuadricula (https://www.clubdelphi.com/foros/showthread.php?t=41012)

Drake 05-03-2007 21:49:21

Dibujar Cuadricula
 
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

Código Delphi [-]
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.


La franja horaria es GMT +2. Ahora son las 04:15:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi