Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-12-2006
eljose eljose is offline
Miembro
 
Registrado: oct 2006
Posts: 12
Poder: 0
eljose Va por buen camino
Dibujar sobre Timagen

Hola, no sabía cómo resumir la pregunta en el título.

Tengo un Timage que tiene la propiedad Strech a true, de tal forma que se adapta al tamaño del form. Si dibujo sobre ella un rectángulo de 100x100 píxeles se dibuja bien, pero si cambio el tamaño del form, el rectángulo se deforma.
Lo que yo quiero es que lo que dibuje sobre la imagen no se deforme. Para eso redibujo el rectángulo en cada evento Onresize del Tform. La orden siempre es que dibuje 100x100 pixeles, pero lo sigue dibujando deformado.

La orden para dibujar el rectangulo es Rectangle(10,10,110,110) al parecer lo toma como píxeles de la imagen y si esta es deforma, escala las distancias.

¿Alguna idea? Gracias.
Responder Con Cita
  #2  
Antiguo 12-12-2006
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Cita:
Empezado por eljose
¿Alguna idea? Gracias.
Pon Strech = false
__________________
[Crandel]
Responder Con Cita
  #3  
Antiguo 12-12-2006
eljose eljose is offline
Miembro
 
Registrado: oct 2006
Posts: 12
Poder: 0
eljose Va por buen camino
No, porque quiero que la imagen se adapte a la pantalla.
Lo que quiero es poder dibujar sobre ella con un tamaño en pixeles real, no relativo al tamaño de la imagen.
Responder Con Cita
  #4  
Antiguo 12-12-2006
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Strech lo que hace es justamente que tu imagen independiente del tamanio, ocupe toda la pantalla, eso deforma la imagen si el el tamanio de la imagen no es igual al tamanio del TImage.

Ahora si lo que quieres es que la imagen se adapte a la pantalla, no lo hagas con Strech sino modificando las propiedades del tamanio de la imagen
__________________
[Crandel]
Responder Con Cita
  #5  
Antiguo 12-12-2006
eljose eljose is offline
Miembro
 
Registrado: oct 2006
Posts: 12
Poder: 0
eljose Va por buen camino
Gracias,

Creo que lo que haré será redimensionar el Timage en el evento Onresize del TForm.
Responder Con Cita
  #6  
Antiguo 12-12-2006
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
El tema es asi, el TImage no hace falta redimensionarlo manualmente, lo puedes hacer con la propiedad Align poniendola en alClient y listo, se adapta al tamaño del formulario o del espacio que le hayas dado.

El tema es la imagen que contiene. Si prestas atención al programa Paint de windows, veras que crea una imagen de tamaño definido y no lo redimensiona, dado que te puede llevar a problemas.

xq ? al agrandar el tamaño de la imagen no hay problema dado que agregaras a la imagen espacio en blanco, pero si la achicas entonces borraras parte del dibujo.

Lo mejor, es definir un tamaño de imagen que se adapte mejor a lo que tu situacion y permitirle al usuario modificarlo manualmente.
__________________
[Crandel]
Responder Con Cita
  #7  
Antiguo 12-12-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Bueno, una solución es corregir las coordenadas para que se ajuste a la imagen "Streachada", por ejemplo:
Código Delphi [-]
function AImgX(Imagen: TImage; x: integer): integer;
begin
  Result:= (x * Imagen.Picture.Width) div Imagen.Width;
end;

function AImgY(Imagen: TImage; y: integer): integer;
begin
  Result:= (y * Imagen.Picture.Height) div Imagen.Height;
end;

// Para dibujar en la imagen un recuadro de 100x100
Image1.Canvas.Rectangle(AImgX(Image1,10),AImgY(Image1,10),
    AImgX(Image1,110),AImgY(Image1,110));
Lo malo es que como la imagen esta deformada puede que los bordes del recuadro no aparezcan definidos, pero eso ya no lo podemos remediar.

Otra solución, es no dibujar sobre la imagen. Puedes colocar un TPaintBox del mismo tamaño encima del TImage, y dibujar sobre el.
Responder Con Cita
  #8  
Antiguo 13-12-2006
eljose eljose is offline
Miembro
 
Registrado: oct 2006
Posts: 12
Poder: 0
eljose Va por buen camino
Gracias, investigaré lo del Paintbox.

Lo que quiero hacer es un lienzo sobre el que dibujar en ejecución, pero no dibuja el usuario, sino el programa. Y se adapta a las dimensiones del lienzo pero sin deformar, redibujando cada vez. Dibuja unos símbolos cuadrados de tamaño fijo y si el lienzo es más grande mete más en cada línea.
¿Debo usar un Timage o hay algo más adecuado?
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Dibujar sobre una imagen. toorbye Gráficos 25 25-04-2017 10:47:55
Dibujar línea dicatek Gráficos 8 29-07-2006 16:47:26
Dibujar figuras sobre un DBChart? sano815 Gráficos 1 14-10-2005 05:21:58
error al cargar una imagen .jpg en un timagen soyhugo Varios 5 31-05-2004 18:36:19
Dibujar en un TWebBrowser nadie135 Internet 1 01-11-2003 22:57:41


La franja horaria es GMT +2. Ahora son las 05:21:10.


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
Copyright 1996-2007 Club Delphi