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 13-03-2005
Noitam Noitam is offline
Registrado
 
Registrado: mar 2005
Posts: 1
Poder: 0
Noitam Va por buen camino
Dibujar en delphi

bueno, escribo aqui en busca de ayuda para hacer un pain en delphi y principalmente esa es la idea
de momento e intentado dibujar una linea en un image o un paintbox, lo e conseguido, pero la idea es que la linea se dibuje con forme arrastre el cursor y quede como definitiva cuando lo suelte.
una cosa que observe, es que el evento onmouseup se activa al soltar cualqueir boton y necesito saber que boton se solto para que no me dibuje lineas con el otro boton del mause xD
si alguien me puede ayudar, me haria un gran favor
Noitam
Responder Con Cita
  #2  
Antiguo 14-03-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Bueno, no es complicado, se trata de jugar con los eventos del Mouse.
Define en la parte privada un par de variables como éstas:

Código Delphi [-]
     _Painting:Boolean;  // Para marcar cuando estamos pintando
     _origen:TPoint;      // punto origen de la línea

Y en los eventos del Mouse del PintBox lo siguiente:

Código Delphi [-]
 procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
 begin
 
   _Painting := True;
   _origen.X := x;
   _origen.Y := Y;
 
 end;
 
 procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
 begin
   _Painting:= False;
 
   PaintBox1.Canvas.Pen.Width := 2;
   PaintBox1.Canvas.Pen.Color := clRed;
   PaintBox1.Canvas.MoveTo(_origen.X, _origen.Y);    (*1*)
   PaintBox1.Canvas.LineTo(x,y);                (*1*)
 
 end;
 
 procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,  Y: Integer);
 begin
   // Si se debe pintar...
   if _Painting then begin
     // Borrar
     PaintBox1.Canvas.FillRect(Self.PaintBox1.ClientRect);
     // pintar
     PaintBox1.Canvas.Pen.Color := clRed;
     Canvas.Polyline([Point(_origen.X, _origen.Y), Point(x,y)]);   (*2*)
   end;
 end;

Para distinguir entre un botón y otro del mouse, verás que exixte un parámetro Button: TMouseButton que te da esa información.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 19-07-2006 a las 10:24:31.
Responder Con Cita
  #3  
Antiguo 16-03-2005
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Otra idea

Yo hice un programa parecido al corel draw o al ilustrator, pero las tecnicas de dibujo son las mismas. Por que no utilizas mejor 2 Timage, uno encima de otro, el primero definelo como transparente. y utiliza las rutinas que ya te proporcionaron en la respuesta anterior, en el evento onmousedow guarda el punto de origen, en el evento onmousemove limpia el timage y traza una linea del punto original a la posiciòn del mouse, en el evento onmouseup guarda el segundo punto, ya teniendo ambos puntos , coloca el punto activo del pixel del cavans en el punto 1 y luego usa el procedimiento lineto(x,y) al punto dos

Pronto subire el programa que hice con el codigo a mi pagina, cuando lo haga te aviso.

Perdona pero no tengo el codigo a la mano, asi que no recuerdo el nombre correcto de las rutinas.
Responder Con Cita
  #4  
Antiguo 17-04-2006
soloriv soloriv is offline
Miembro
 
Registrado: jul 2004
Posts: 75
Poder: 20
soloriv Va por buen camino
Hola a todos
Segui este hilo y mi consulta es como hacer lo mismo pero con un jpeg dado que me da como error no es un bmp, si es posible, si no tendre que convertir.
Y la otra duda es que siendo bmp la imagen en un image o paintbox al arrastrar el mouse la imagen se pierde completamente y se vuelve un cuadro blanco. Necesitaria crear un bitmap para que esto no ocurra o como lo solucionaria.
Saludos y Gracias Soloriv.
Responder Con Cita
  #5  
Antiguo 19-07-2006
pattyka pattyka is offline
Miembro
 
Registrado: jun 2006
Posts: 26
Poder: 0
pattyka Va por buen camino
Question

como dibujar un circulo con los eventos del mouse en paintbox como se hace???... porfavor
Responder Con Cita
  #6  
Antiguo 19-07-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por pattyka
como dibujar un circulo con los eventos del mouse en paintbox como se hace???
Hola.
Antes de nada te recomiendo que revises la Guia de estilo.

Para dibujar un circulo/Elipse utilizando el código que hay arriba, puedes cambiar las dos líneas dode aparece (*1*) por éste código:

Código Delphi [-]
  PaintBox1.Canvas.Ellipse(_origen.X, _origen.Y, x,y);

Y la línea donde pone (*2*) por esta:

Código Delphi [-]
Canvas.Ellipse(_origen.X, _origen.Y, x,y);
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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


La franja horaria es GMT +2. Ahora son las 10:51:04.


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