• Domingo 22 de Diciembre de 2024, 08:19

Autor Tema:  Re: API de windows...  (Leído 2715 veces)

pacegar

  • Miembro MUY activo
  • ***
  • Mensajes: 108
  • Nacionalidad: es
    • Ver Perfil
    • INTEGRA Canarias
Re: API de windows...
« en: Martes 23 de Septiembre de 2003, 11:43 »
0
Hola, dos cosas relacionadas con las API
Primero quería proponer un foro solo para API ya que veo que no está disponible y se pueden tratar cosas importantes...

Segundo. Mi pregunta va relacionada con API y es que necesito caputurar un área definida por mi de un formulario... necesito capturar ese area para luego imprimirlo en un report.:good:
Pedro Acevedo
Director de Desarrollo
INTEGRA Tecnología y Comunicación de Canarias
www.integracanarias.com

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: API de windows...
« Respuesta #1 en: Martes 23 de Septiembre de 2003, 11:59 »
0
Hola pacegar

Sobre la primera cuestión échale un vistazo al foro Sugerir un nuevo foro.

Sobre lo segundo, mira éste enlace a otro tema del foro http://foros.solocodigo.com/viewthread.php?tid=4635 y a ver que tal.

Ánimo y suerte.

pacegar

  • Miembro MUY activo
  • ***
  • Mensajes: 108
  • Nacionalidad: es
    • Ver Perfil
    • INTEGRA Canarias
Re: API de windows...
« Respuesta #2 en: Martes 23 de Septiembre de 2003, 12:39 »
0
Primeramente, muchas gracias por la pronta respuesta!

Si que funciona, pero el problema se encuentra que el picture2 (destino) lo debo de tener en otro formulario... y mencionandolo así en la función no me pega la imagen....
Se te ocurre algo?

lngRc = BitBlt(Picture1.hDC, 1, 1, 7185, 4275, form2.Picture1.hDC, 1, 1, &HCC0020)
Pedro Acevedo
Director de Desarrollo
INTEGRA Tecnología y Comunicación de Canarias
www.integracanarias.com

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: API de windows...
« Respuesta #3 en: Martes 23 de Septiembre de 2003, 12:55 »
0
¿Puede ser que la propiedad Autoredraw del segundo PictureBox sea False? Si esto es así, no dudes en ponerla a True.

Si el problema no se arregla, más tarde hago unas pruebas y a ver si te digo algo.

Chao.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: API de windows...
« Respuesta #4 en: Martes 23 de Septiembre de 2003, 14:49 »
0
Hola pacegar.

Asegúrate de lo que te comentaba antes: que en el PictureBox destino la propiedad Autoredraw = True. Esto es necesario para que la imagen que resulta de un método gráfico sea persistente.

Aparte de esto, observo lo siguiente: Si la llamada a la api se realiza a continuación del método show del formulario que abres y no da tiempo a que el formulario se haya visualizado, no se pinta la imagen copiada. Para solucionar esto incluye un DoEvents a continuación del 'Show' y listo.

Y una última cosa (por si acaso): Verifica que en la llamada a la api, el orden de los parámetros es el correcto. Fíjate que en primer lugar va el hDC del PictureBox destino, en lugar del origen como intuitivamente podría parecer.


Abur.

pacegar

  • Miembro MUY activo
  • ***
  • Mensajes: 108
  • Nacionalidad: es
    • Ver Perfil
    • INTEGRA Canarias
Re: API de windows...
« Respuesta #5 en: Martes 23 de Septiembre de 2003, 18:27 »
0
perfecto... poniendo el autoredraw a true y haciendo una pausa entre el copiado el show del nuevo form, todo va bien!

Gracias por todo! :good:
Pedro Acevedo
Director de Desarrollo
INTEGRA Tecnología y Comunicación de Canarias
www.integracanarias.com

pacegar

  • Miembro MUY activo
  • ***
  • Mensajes: 108
  • Nacionalidad: es
    • Ver Perfil
    • INTEGRA Canarias
Re: API de windows...
« Respuesta #6 en: Miércoles 24 de Septiembre de 2003, 14:19 »
0
Me ha surgido otro problema...
A la hora de imprimir ese formulario donde tengo los pictures con las copias... no me los imprime.... salen en blanco...
He hecho el autroredraw del form y un refresh pero nada...
Alguna idea?
Pedro Acevedo
Director de Desarrollo
INTEGRA Tecnología y Comunicación de Canarias
www.integracanarias.com

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: API de windows...
« Respuesta #7 en: Miércoles 24 de Septiembre de 2003, 14:36 »
0
Hola pacegar

Si estás utilizando la propiedad 'Picture' del PictureBox no te imprimirá nada (a no ser que hubieras cargado desde un fichero una imagen en el control). Utiliza la propiedad Image y a ver que tal.

Abur.

Ep! Disculpas. Acabo de ver que lo que intentas imprimir es el formulario, no el PictureBox... lo tendría que ver.

pacegar

  • Miembro MUY activo
  • ***
  • Mensajes: 108
  • Nacionalidad: es
    • Ver Perfil
    • INTEGRA Canarias
Re: API de windows...
« Respuesta #8 en: Miércoles 24 de Septiembre de 2003, 14:41 »
0
el objeto image no tiene la propiedad hDc... aun así no consigo copiar un picture a un image con el BitBlt...
Pedro Acevedo
Director de Desarrollo
INTEGRA Tecnología y Comunicación de Canarias
www.integracanarias.com

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: API de windows...
« Respuesta #9 en: Miércoles 24 de Septiembre de 2003, 14:58 »
0
Acabo de probar el caso y a mi me funciona perfectamente. Para imprimir el formulario utilicé el método PrintForm del mismo.

Lo que te decía de la propiedad Image no era para hacer la copia sobre un hDC que tuviera la propiedad, sino para imprimir el contenido del PictureBox (con Printer.PaintPicture Picture1.Image, x , y cosa que también funciona perfectamente), aunque luego me fijé que lo que querías imprimir era el formulario (de todas formas y como curiosidad, supongo que se podrían copiar los bits creando un hDC compatible y todas esas movidas...). Disculpa que me hubiese explicado mal.

Chao.

pacegar

  • Miembro MUY activo
  • ***
  • Mensajes: 108
  • Nacionalidad: es
    • Ver Perfil
    • INTEGRA Canarias
API de windows...
« Respuesta #10 en: Jueves 25 de Septiembre de 2003, 14:04 »
0
Por si a alguien le sirve...
al final lo arreglé, sobreescribiendo el contenido del picture asi, y por lo tanto se puede imprimir el formulario

lngRc = BitBlt(Picture2.hDC, 1, 1, 7185, 4275, form2.Picture1.hDC, 1, 1, &HCC0020)

clipboard.seldata = picture2.image
picture2=clipboard.getdata
Pedro Acevedo
Director de Desarrollo
INTEGRA Tecnología y Comunicación de Canarias
www.integracanarias.com