Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Dibujar sobre el escritorio de Windows (https://www.clubdelphi.com/foros/showthread.php?t=55561)

alquimista 21-04-2008 00:01:23

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?

dec 21-04-2008 00:04:38

Hola,

Tal vez pueda servirte el componente TDesktopCanvas de Zarko Gajic. ;)

alquimista 21-04-2008 00:40:16

gracias..

probare a ver si me sirve.

fdanielc 16-05-2008 19:13:48

A mi tambien me sirve, pero lo que no vi ningun ejemplo, si tenes elguno te lo encargo, desde ya muchisimas gracias.

roman 16-05-2008 19:29:26

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

seoane 16-05-2008 20:49:50

1 Archivos Adjunto(s)
Otra sugerencia:

roman 16-05-2008 21:06:42

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

seoane 16-05-2008 21:20:10

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 ;)

roman 16-05-2008 21:36:55

Ya, gracias. Pero en realidad me has confundido más :D

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

seoane 16-05-2008 22:55:09

1 Archivos Adjunto(s)
Cita:

Empezado por roman (Mensaje 287293)
¿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

roman 19-05-2008 16:42:34

Cita:

Empezado por seoane (Mensaje 287315)
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

alquimista 20-05-2008 02:05:19

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


La franja horaria es GMT +2. Ahora son las 17:44:00.

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