Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Ahora comprendo la cara de asombro de cHackAll , yo también me quedé a cuadros

Código Delphi [-]
Procedure TForm1.Cuadrado (Const X,Y :integer);
Begin
  With Canvas Do
  Begin
    Pen.Mode := pmCopy;
    MoveTo (Origen.X,Origen.Y);
    Rectangle (Origen.X,Origen.Y,Punto.X,Punto.Y);
    MoveTo (Origen.X,Origen.Y);
    Rectangle (Origen.X,Origen.Y,X,Y);
  end; //Final del With Image1.Canvas
end;


procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
If Button = mbLeft Then
      Begin
          Pintando := True;
          Canvas.MoveTo (X,Y);
          Origen.X := X;
          Origen.Y := Y;
      end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
If Pintando Then
  begin
    Punto := Point (X,Y);
    ultimo := Point(x,y);
    BorrarUltimo := True;
    Canvas.Pen.Style := psDot;
    Canvas.Pen.Mode := pmCopy;
    Canvas.Rectangle(Origen.x, Origen.Y,x,y);

  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Pintando := False;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
If Button = mbLeft Then
  Begin
    Pintando := False;
    Canvas.pen.style := pssolid;
    Canvas.Rectangle(Origen.x, Origen.Y, ultimo.x, ultimo.Y);
    Cuadrado(x,y);
  end;
end;
El modo pmNotXor lo que hace básicamente es invertir el color que haya en ese punto, con sus detalles y demás.... pero básicamente eso.

Lo que necesitas es usar pmCopy que será el que te pinta encima de otras piezas.

Tendrás que adaptarlo, ya que al incluir sólo la unidad tuve que copiar y pegar a una aplicación de prueba.

Tiene algunos fallitos, pero eso ya te lo dejo a ti.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #2  
Antiguo 01-12-2008
pablopessoa pablopessoa is offline
Miembro
 
Registrado: may 2008
Ubicación: Argentina
Posts: 162
Poder: 17
pablopessoa Va por buen camino
Te agradezo la respuesta y la molestia que te tomaste, pero usar pmCopy, si bien "pisa" la imagen tiene un problema, supongamos que hago el rectangulo, pero no suelto el mouse, si vuelvo para atras (es decir, "giro" el mouse) el rectangulo se llena de rayitas, adjunto una imagen por si no se entiende lo que digo
Archivos Adjuntos
Tipo de Archivo: zip Dibujo.zip (14,7 KB, 20 visitas)
Responder Con Cita
  #3  
Antiguo 02-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
claro, ese es el "fallito que te lo dejaba a tí"

Cuando se mueve el mouse, debes guardar la posición en la que se ha dibujado el cuadrado de rayitas (el que marca la selección) y usar pen xor o NotXor para borrar el cuadro anterior. Lo que te ocurre es igualito a cuando terminas una partida del solitario de windows

La filosofía es simple:
- Primero dibujas en modo pmcopy y dsdot para crear el cuadro
- al mover el ratón hacia atrás, debes borrar el cuadro anterior, y eso se consigue pintando de nuevo en las coordenadas del antiguo cuadro con el modo NotXor y dsdot.

Dicho de otra forma: borrar un cuadro es pintar con xor activado.

Edito: las imágenes, puedes subirlas a www.imageshack.us por ejemplo y poner el link aquí.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 02-12-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Archivos Adjuntos
Tipo de Archivo: zip noPen.zip (1,2 KB, 32 visitas)
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #5  
Antiguo 02-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por cHackAll Ver Mensaje
eso es trampa
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 02-12-2008
pablopessoa pablopessoa is offline
Miembro
 
Registrado: may 2008
Ubicación: Argentina
Posts: 162
Poder: 17
pablopessoa Va por buen camino
Gracias por el ejemplo! es justo lo que necesitaba, voy a adaptarlo a mi aplicacion!
Muchas Gracias!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Guardad Canvas De Un Image Con La propiedad stretch:=true gulder Gráficos 9 28-11-2008 16:26:03
Imagen de un Image a otro joHn je@N Gráficos 1 06-06-2005 10:06:00
¿como asignar una imagen de una BD a un Image? scotex Conexión con bases de datos 3 20-02-2005 12:16:14
Como elimino una imagen de un Image maravert Gráficos 1 26-09-2004 23:43:28
Ruta de Imagen de un Image pkbza Conexión con bases de datos 1 10-05-2004 15:47:58


La franja horaria es GMT +2. Ahora son las 17:41:02.


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