Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-04-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Dibujar sobre el escritorio de Windows

¿Es posible realizar una app que dibuje sobre el escritorio de Windows o de cualquier aplicación pero con fondo transparente?
Es decir como si utilizase el paint pero sobre lo que se vea en pantalla no sobre un canvas blanco.

Existe alguna aplicación que haga esto o un componente?
Responder Con Cita
  #2  
Antiguo 21-04-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Tal vez pueda servirte el componente TDesktopCanvas de Zarko Gajic.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 21-04-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Smile

gracias..

probare a ver si me sirve.
Responder Con Cita
  #4  
Antiguo 16-05-2008
fdanielc fdanielc is offline
Registrado
 
Registrado: ene 2008
Posts: 8
Poder: 0
fdanielc Va por buen camino
A mi tambien me sirve, pero lo que no vi ningun ejemplo, si tenes elguno te lo encargo, desde ya muchisimas gracias.
Responder Con Cita
  #5  
Antiguo 16-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Un ejemplito, aunque no con lo de Zarco,

Código Delphi [-]
var
  Desktop: TControlCanvas;

begin
  Desktop := TControlCanvas.Create;

  try
    Desktop.Handle := GetDC(0);

    Desktop.Pen.Width := 2;
    Desktop.Pen.Color := clRed;

    Desktop.MoveTo(0, 0);
    Desktop.LineTo(Screen.Width, Screen.Height);

    Desktop.MoveTo(0, Screen.Height);
    Desktop.LineTo(Screen.Width, 0);
  finally
    Desktop.Free
  end;
end;

// Saludos
Responder Con Cita
  #6  
Antiguo 16-05-2008
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
Otra sugerencia:
Archivos Adjuntos
Tipo de Archivo: zip Ejemplo45.zip (7,3 KB, 53 visitas)
Responder Con Cita
  #7  
Antiguo 16-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Está muy bien ese ejemplo Domingo. Una pregunta, ¿esta técnica es la que usarías para poder dibujar y borrar?

Ya sé que es una pregunta tonta porque es justamente lo que hace tu ejemplo, pero estoy pensando en programas como el wink que permiten trazar un recuadro sobre el escritorio y cambiarle de posición y tamaño. ¿Usan algo así como tu ejemplo o hay otras técnicas?

// Saludos
Responder Con Cita
  #8  
Antiguo 16-05-2008
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
Lo mas difícil de dibujar directamente sobre la pantalla es interceptar los eventos del ratón, pero creo que eso lo podemos solucionar con un hook. Por ejemplo, nuestra aplicación podría utilizar un hook de ratón y cuando estemos dibujando procesar ella misma los eventos de ratón, y no dejar que lleguen a otras aplicaciones.

Por lo demás seria igual que cualquier otra aplicación de dibujo, pero teniendo en cuenta que uno de los colores es transparente.

Aquí por ejemplo, deje el código de una aplicación (muy sencilla) que permitía dibujar objetos (rectángulos, elipses, etc) y luego moverlo, redimensionarlos, etc.

http://www.clubdelphi.com/foros/show...88&postcount=2

Como ya dije lo mas complicado seria lo de los hooks, pero tampoco demasiado
Responder Con Cita
  #9  
Antiguo 16-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ya, gracias. Pero en realidad me has confundido más

A ver, en este otro ejemplo, tú dibujas sobre un PaintBox en tu formulario, de manera que puedes borrar (o pintar) el fondo cada vez que lo requieras de manera que puedes dar el efecto de la redimensión y movimiento de los objetos.

Pero si dibujas directamente sobre el escritorio, ¿cómo lo haces? ¿Cómo borras la posición anterior? Por eso me llamó la atención tu ejemplo 45. Es decir, más que el uso del ratón, mi duda va sobre como borrar lo dibujado, en caso de dibujar directamente sobre el HDC del escritorio. ¿Hay alguna forma directa, o se debe usar una técnica como la de tu formulario transparente?

// Saludos
Responder Con Cita
  #10  
Antiguo 16-05-2008
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
Cita:
Empezado por roman Ver Mensaje
¿Hay alguna forma directa, o se debe usar una técnica como la de tu formulario transparente?
Pues no se que técnica usan esos programas, así, de repente, se me ocurre que para borrar pueden forzar a las ventanas que están por debajo a que se redibujen, pero no conozco una forma mas directa de hacerlo.

Yo creo que lo mas sencillo es usar un formulario transparente como el de mi ejemplo, y ahí dibujar lo que uno quiera.

Mira lo que pasa si al ejemplo31 le pongo como color transparente el blanco y le aumento un poco el grosor de las lineas, aunque son un poco difíciles de mover las figuras no queda nada mal el resultado
Archivos Adjuntos
Tipo de Archivo: zip Ejemplo46.zip (17,0 KB, 35 visitas)
Responder Con Cita
  #11  
Antiguo 19-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por seoane Ver Mensaje
Yo creo que lo mas sencillo es usar un formulario transparente como el de mi ejemplo, y ahí dibujar lo que uno quiera.
Y con eso me voy a quedar. Muchas gracias Domingo, y disculpa no haber contestado antes pero no me conecté este fin de semana. Pero sí vi el correo de notificación y ya había hecho la prueba que mencionas, y es tal como dices, queda bastante bien.

// Saludos
Responder Con Cita
  #12  
Antiguo 20-05-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Asombroso...

¿Con este ejemplo se pueden utilizar manejadores en las figuras y la posibilidad de curvas bezier?

Cita:
Ya sé que es una pregunta tonta porque es justamente lo que hace tu ejemplo, pero estoy pensando en programas como el wink que
Algunos programas capturan el escritorio y lo utilizan como fondo de formulario, dando la sensación de que en realidad se dibuja encima de él...

gracias
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 con la API de Windows Susanna API de Windows 2 02-11-2007 12:05:51
Como dibujar en el escritorio sin que se borre ? fafastrungen Gráficos 2 29-01-2007 00:15:14
Dibujar sobre Timagen eljose Gráficos 7 13-12-2006 11:01:58
Dibujar figuras sobre un DBChart? sano815 Gráficos 1 14-10-2005 05:21:58


La franja horaria es GMT +2. Ahora son las 23:14:18.


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